Changeset 852 in 3DVCSoftware for branches/HTM-10.0-dev0/source/Lib/TLibDecoder
- Timestamp:
- 13 Feb 2014, 22:34:17 (11 years ago)
- Location:
- branches/HTM-10.0-dev0/source/Lib/TLibDecoder
- Files:
-
- 25 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HTM-10.0-dev0/source/Lib/TLibDecoder/AnnexBread.cpp
r608 r852 4 4 * granted under this license. 5 5 * 6 * Copyright (c) 2010-2013, ITU/ISO/IEC6 * Copyright (c) 2010-2014, ITU/ISO/IEC 7 7 * All rights reserved. 8 8 * -
branches/HTM-10.0-dev0/source/Lib/TLibDecoder/AnnexBread.h
r608 r852 4 4 * granted under this license. 5 5 * 6 * Copyright (c) 2010-2013, ITU/ISO/IEC6 * Copyright (c) 2010-2014, ITU/ISO/IEC 7 7 * All rights reserved. 8 8 * -
branches/HTM-10.0-dev0/source/Lib/TLibDecoder/NALread.cpp
r608 r852 4 4 * granted under this license. 5 5 * 6 * Copyright (c) 2010-2013, ITU/ISO/IEC6 * Copyright (c) 2010-2014, ITU/ISO/IEC 7 7 * All rights reserved. 8 8 * … … 70 70 break; 71 71 } 72 assert(*it_read <= 0x03); 72 73 } 73 74 zeroCount = (*it_read == 0x00) ? zeroCount+1 : 0; … … 126 127 else 127 128 { 128 assert( nalu.m_nalUnitType != NAL_UNIT_CODED_SLICE_T LA_R129 assert( nalu.m_nalUnitType != NAL_UNIT_CODED_SLICE_TSA_R 129 130 && nalu.m_nalUnitType != NAL_UNIT_CODED_SLICE_TSA_N 130 131 && nalu.m_nalUnitType != NAL_UNIT_CODED_SLICE_STSA_R -
branches/HTM-10.0-dev0/source/Lib/TLibDecoder/NALread.h
r608 r852 4 4 * granted under this license. 5 5 * 6 * Copyright (c) 2010-2013, ITU/ISO/IEC6 * Copyright (c) 2010-2014, ITU/ISO/IEC 7 7 * All rights reserved. 8 8 * -
branches/HTM-10.0-dev0/source/Lib/TLibDecoder/SEIread.cpp
r655 r852 4 4 * granted under this license. 5 5 * 6 * Copyright (c) 2010-2013, ITU/ISO/IEC6 * Copyright (c) 2010-2014, ITU/ISO/IEC 7 7 * All rights reserved. 8 8 * … … 443 443 if( !pHRD->getSubPicCpbParamsPresentFlag() ) 444 444 { 445 READ_FLAG( code, "rap_cpb_params_present_flag" ); sei.m_rapCpbParamsPresentFlag = code; 445 READ_FLAG( code, "irap_cpb_params_present_flag" ); sei.m_rapCpbParamsPresentFlag = code; 446 } 447 if( sei.m_rapCpbParamsPresentFlag ) 448 { 449 READ_CODE( pHRD->getCpbRemovalDelayLengthMinus1() + 1, code, "cpb_delay_offset" ); sei.m_cpbDelayOffset = code; 450 READ_CODE( pHRD->getDpbOutputDelayLengthMinus1() + 1, code, "dpb_delay_offset" ); sei.m_dpbDelayOffset = code; 446 451 } 447 452 //read splicing flag and cpb_removal_delay_delta … … 450 455 READ_CODE( ( pHRD->getCpbRemovalDelayLengthMinus1() + 1 ), code, "au_cpb_removal_delay_delta_minus1" ); 451 456 sei.m_auCpbRemovalDelayDelta = code + 1; 452 if( sei.m_rapCpbParamsPresentFlag )453 {454 READ_CODE( pHRD->getCpbRemovalDelayLengthMinus1() + 1, code, "cpb_delay_offset" ); sei.m_cpbDelayOffset = code;455 READ_CODE( pHRD->getDpbOutputDelayLengthMinus1() + 1, code, "dpb_delay_offset" ); sei.m_dpbDelayOffset = code;456 }457 457 for( nalOrVcl = 0; nalOrVcl < 2; nalOrVcl ++ ) 458 458 { -
branches/HTM-10.0-dev0/source/Lib/TLibDecoder/SEIread.h
r608 r852 4 4 * granted under this license. 5 5 * 6 * Copyright (c) 2010-2013, ITU/ISO/IEC6 * Copyright (c) 2010-2014, ITU/ISO/IEC 7 7 * All rights reserved. 8 8 * -
branches/HTM-10.0-dev0/source/Lib/TLibDecoder/SyntaxElementParser.cpp
r655 r852 4 4 * granted under this license. 5 5 * 6 * Copyright (c) 2010-201 3, ITU/ISO/IEC6 * Copyright (c) 2010-2014, ITU/ISO/IEC 7 7 * All rights reserved. 8 8 * -
branches/HTM-10.0-dev0/source/Lib/TLibDecoder/SyntaxElementParser.h
r608 r852 4 4 * granted under this license. 5 5 * 6 * Copyright (c) 2010-2013, ITU/ISO/IEC6 * Copyright (c) 2010-2014, ITU/ISO/IEC 7 7 * All rights reserved. 8 8 * -
branches/HTM-10.0-dev0/source/Lib/TLibDecoder/TDecBinCoder.h
r608 r852 4 4 * granted under this license. 5 5 * 6 * Copyright (c) 2010-2013, ITU/ISO/IEC6 * Copyright (c) 2010-2014, ITU/ISO/IEC 7 7 * All rights reserved. 8 8 * -
branches/HTM-10.0-dev0/source/Lib/TLibDecoder/TDecBinCoderCABAC.cpp
r608 r852 4 4 * granted under this license. 5 5 * 6 * Copyright (c) 2010-2013, ITU/ISO/IEC6 * Copyright (c) 2010-2014, ITU/ISO/IEC 7 7 * All rights reserved. 8 8 * -
branches/HTM-10.0-dev0/source/Lib/TLibDecoder/TDecBinCoderCABAC.h
r608 r852 4 4 * granted under this license. 5 5 * 6 * Copyright (c) 2010-2013, ITU/ISO/IEC6 * Copyright (c) 2010-2014, ITU/ISO/IEC 7 7 * All rights reserved. 8 8 * -
branches/HTM-10.0-dev0/source/Lib/TLibDecoder/TDecCAVLC.cpp
r833 r852 4 4 * granted under this license. 5 5 * 6 * Copyright (c) 2010-201 3, ITU/ISO/IEC6 * Copyright (c) 2010-2014, ITU/ISO/IEC 7 7 * All rights reserved. 8 8 * … … 848 848 READ_UVLC( uiCode, "log2_diff_max_min_coding_block_size" ); 849 849 pcSPS->setLog2DiffMaxMinCodingBlockSize(uiCode); 850 851 if (pcSPS->getPTL()->getGeneralPTL()->getLevelIdc() >= Level::LEVEL5) 852 { 853 assert(log2MinCUSize + pcSPS->getLog2DiffMaxMinCodingBlockSize() >= 5); 854 } 855 850 856 Int maxCUDepthDelta = uiCode; 851 857 pcSPS->setMaxCUWidth ( 1<<(log2MinCUSize + maxCUDepthDelta) ); -
branches/HTM-10.0-dev0/source/Lib/TLibDecoder/TDecCAVLC.h
r833 r852 4 4 * granted under this license. 5 5 * 6 * Copyright (c) 2010-2013, ITU/ISO/IEC6 * Copyright (c) 2010-2014, ITU/ISO/IEC 7 7 * All rights reserved. 8 8 * -
branches/HTM-10.0-dev0/source/Lib/TLibDecoder/TDecCu.cpp
r833 r852 4 4 * granted under this license. 5 5 * 6 * Copyright (c) 2010-2013, ITU/ISO/IEC6 * Copyright (c) 2010-2014, ITU/ISO/IEC 7 7 * All rights reserved. 8 8 * … … 37 37 38 38 #include "TDecCu.h" 39 40 39 //! \ingroup TLibDecoder 41 40 //! \{ … … 639 638 640 639 m_ppcCU[uiDepth]->copySubCU( pcCU, uiAbsPartIdx, uiDepth ); 641 640 641 #if H_MV_ENC_DEC_TRAC 642 #if ENC_DEC_TRACE 643 stopAtPos ( m_ppcCU[uiDepth]->getSlice()->getPOC(), 644 m_ppcCU[uiDepth]->getSlice()->getLayerId(), 645 m_ppcCU[uiDepth]->getCUPelX(), 646 m_ppcCU[uiDepth]->getCUPelY(), 647 m_ppcCU[uiDepth]->getWidth(0), 648 m_ppcCU[uiDepth]->getHeight(0) ); 649 #endif 650 #endif 651 642 652 switch( m_ppcCU[uiDepth]->getPredictionMode(0) ) 643 653 { … … 917 927 } 918 928 #endif 919 929 930 #if H_3D && UPDATE_HM13 931 Bool useDltFlag = (isDimMode( uiLumaPredMode ) || uiLumaPredMode == HOR_IDX || uiLumaPredMode == VER_IDX || uiLumaPredMode == DC_IDX) && pcCU->getSlice()->getIsDepth() && pcCU->getSlice()->getPPS()->getDLT()->getUseDLTFlag(pcCU->getSlice()->getLayerIdInVps()); 932 933 if ( pcCU->getCbf( uiAbsPartIdx, TEXT_LUMA, uiTrDepth ) || useDltFlag ) 934 #else 935 if ( pcCU->getCbf( uiAbsPartIdx, TEXT_LUMA, uiTrDepth ) ) 936 #endif 937 { 920 938 //===== inverse transform ===== 921 939 m_pcTrQuant->setQPforQuant ( pcCU->getQP(0), TEXT_LUMA, pcCU->getSlice()->getSPS()->getQpBDOffsetY(), 0 ); 922 940 923 941 Int scalingListType = (pcCU->isIntra(uiAbsPartIdx) ? 0 : 3) + g_eTTable[(Int)TEXT_LUMA]; 924 assert(scalingListType < 6);942 assert(scalingListType < SCALING_LIST_NUM); 925 943 m_pcTrQuant->invtransformNxN( pcCU->getCUTransquantBypass(uiAbsPartIdx), TEXT_LUMA, pcCU->getLumaIntraDir( uiAbsPartIdx ), piResi, uiStride, pcCoeff, uiWidth, uiHeight, scalingListType, useTransformSkip ); 926 944 … … 936 954 { 937 955 #if H_3D 956 #if UPDATE_HM13 957 if ( useDltFlag ) 958 #else 938 959 if( (isDimMode( uiLumaPredMode ) || uiLumaPredMode == HOR_IDX || uiLumaPredMode == VER_IDX || uiLumaPredMode == DC_IDX) && pcCU->getSlice()->getIsDepth() && pcCU->getSlice()->getPPS()->getDLT()->getUseDLTFlag(pcCU->getSlice()->getLayerIdInVps()) ) 960 #endif 939 961 { 940 962 pReco [ uiX ] = pcCU->getSlice()->getPPS()->getDLT()->idx2DepthValue( pcCU->getSlice()->getLayerIdInVps(), Clip3( 0, pcCU->getSlice()->getPPS()->getDLT()->getNumDepthValues( pcCU->getSlice()->getLayerIdInVps() ) - 1, pcCU->getSlice()->getPPS()->getDLT()->depthValue2idx( pcCU->getSlice()->getLayerIdInVps(), pPred[ uiX ] ) + pResi[ uiX ] ) ); … … 953 975 pReco += uiStride; 954 976 pRecIPred += uiRecIPredStride; 977 } 978 } 979 else 980 { 981 //===== reconstruction ===== 982 Pel* pPred = piPred; 983 Pel* pReco = piReco; 984 Pel* pRecIPred = piRecIPred; 985 for ( Int y = 0; y < uiHeight; y++ ) 986 { 987 for ( Int x = 0; x < uiWidth; x++ ) 988 { 989 pReco [ x ] = pPred[ x ]; 990 pRecIPred[ x ] = pReco[ x ]; 991 } 992 pPred += uiStride; 993 pReco += uiStride; 994 pRecIPred += uiRecIPredStride; 995 } 955 996 } 956 997 } … … 1022 1063 } 1023 1064 1065 if ( pcCU->getCbf( uiAbsPartIdx, eText, uiTrDepth ) ) 1066 { 1024 1067 //===== inverse transform ===== 1025 1068 Int curChromaQpOffset; … … 1035 1078 1036 1079 Int scalingListType = (pcCU->isIntra(uiAbsPartIdx) ? 0 : 3) + g_eTTable[(Int)eText]; 1037 assert(scalingListType < 6);1080 assert(scalingListType < SCALING_LIST_NUM); 1038 1081 m_pcTrQuant->invtransformNxN( pcCU->getCUTransquantBypass(uiAbsPartIdx), eText, REG_DCT, piResi, uiStride, pcCoeff, uiWidth, uiHeight, scalingListType, useTransformSkipChroma ); 1039 1082 … … 1054 1097 pReco += uiStride; 1055 1098 pRecIPred += uiRecIPredStride; 1099 } 1100 } 1101 else 1102 { 1103 //===== reconstruction ===== 1104 Pel* pPred = piPred; 1105 Pel* pReco = piReco; 1106 Pel* pRecIPred = piRecIPred; 1107 for ( Int y = 0; y < uiHeight; y++ ) 1108 { 1109 for ( Int x = 0; x < uiWidth; x++ ) 1110 { 1111 pReco [ x ] = pPred[ x ]; 1112 pRecIPred[ x ] = pReco[ x ]; 1113 } 1114 pPred += uiStride; 1115 pReco += uiStride; 1116 pRecIPred += uiRecIPredStride; 1117 } 1056 1118 } 1057 1119 } -
branches/HTM-10.0-dev0/source/Lib/TLibDecoder/TDecCu.h
r833 r852 4 4 * granted under this license. 5 5 * 6 * Copyright (c) 2010-2013, ITU/ISO/IEC6 * Copyright (c) 2010-2014, ITU/ISO/IEC 7 7 * All rights reserved. 8 8 * -
branches/HTM-10.0-dev0/source/Lib/TLibDecoder/TDecEntropy.cpp
r833 r852 4 4 * granted under this license. 5 5 * 6 * Copyright (c) 2010-2013, ITU/ISO/IEC6 * Copyright (c) 2010-2014, ITU/ISO/IEC 7 7 * All rights reserved. 8 8 * … … 580 580 } 581 581 582 Void TDecEntropy::xDecodeTransform( TComDataCU* pcCU, UInt offsetLuma, UInt offsetChroma, UInt uiAbsPartIdx, UInt uiDepth, UInt width, UInt height, UInt uiTrIdx, Bool& bCodeDQP )582 Void TDecEntropy::xDecodeTransform( TComDataCU* pcCU, UInt offsetLuma, UInt offsetChroma, UInt uiAbsPartIdx, UInt uiDepth, UInt width, UInt height, UInt uiTrIdx, Bool& bCodeDQP, Int quadtreeTULog2MinSizeInCU) 583 583 { 584 584 UInt uiSubdiv; … … 604 604 else if( (pcCU->getSlice()->getSPS()->getQuadtreeTUMaxDepthInter() == 1) && (pcCU->getPredictionMode(uiAbsPartIdx) == MODE_INTER) && ( pcCU->getPartitionSize(uiAbsPartIdx) != SIZE_2Nx2N ) && (uiDepth == pcCU->getDepth(uiAbsPartIdx)) ) 605 605 { 606 uiSubdiv = (uiLog2TrafoSize > pcCU->getQuadtreeTULog2MinSizeInCU(uiAbsPartIdx));606 uiSubdiv = (uiLog2TrafoSize > quadtreeTULog2MinSizeInCU); 607 607 } 608 608 else if( uiLog2TrafoSize > pcCU->getSlice()->getSPS()->getQuadtreeTULog2MaxSize() ) … … 614 614 uiSubdiv = 0; 615 615 } 616 else if( uiLog2TrafoSize == pcCU->getQuadtreeTULog2MinSizeInCU(uiAbsPartIdx))616 else if( uiLog2TrafoSize == quadtreeTULog2MinSizeInCU ) 617 617 { 618 618 uiSubdiv = 0; … … 620 620 else 621 621 { 622 assert( uiLog2TrafoSize > pcCU->getQuadtreeTULog2MinSizeInCU(uiAbsPartIdx));622 assert( uiLog2TrafoSize > quadtreeTULog2MinSizeInCU ); 623 623 m_pcEntropyDecoderIf->parseTransformSubdivFlag( uiSubdiv, 5 - uiLog2TrafoSize ); 624 624 } … … 666 666 for( Int i = 0; i < 4; i++ ) 667 667 { 668 xDecodeTransform( pcCU, offsetLuma, offsetChroma, uiAbsPartIdx, uiDepth, width, height, uiTrIdx, bCodeDQP );668 xDecodeTransform( pcCU, offsetLuma, offsetChroma, uiAbsPartIdx, uiDepth, width, height, uiTrIdx, bCodeDQP, quadtreeTULog2MinSizeInCU ); 669 669 uiYCbf |= pcCU->getCbf( uiAbsPartIdx, TEXT_LUMA, uiTrDepth+1 ); 670 670 uiUCbf |= pcCU->getCbf( uiAbsPartIdx, TEXT_CHROMA_U, uiTrDepth+1 ); … … 886 886 887 887 } 888 xDecodeTransform( pcCU, uiLumaOffset, uiChromaOffset, uiAbsPartIdx, uiDepth, uiWidth, uiHeight, 0, bCodeDQP ); 888 889 Int getQuadtreeTULog2MinSizeInCU = pcCU->getQuadtreeTULog2MinSizeInCU(uiAbsPartIdx); 890 891 xDecodeTransform( pcCU, uiLumaOffset, uiChromaOffset, uiAbsPartIdx, uiDepth, uiWidth, uiHeight, 0, bCodeDQP, getQuadtreeTULog2MinSizeInCU ); 889 892 } 890 893 -
branches/HTM-10.0-dev0/source/Lib/TLibDecoder/TDecEntropy.h
r833 r852 4 4 * granted under this license. 5 5 * 6 * Copyright (c) 2010-2013, ITU/ISO/IEC6 * Copyright (c) 2010-2014, ITU/ISO/IEC 7 7 * All rights reserved. 8 8 * … … 210 210 211 211 private: 212 Void xDecodeTransform ( TComDataCU* pcCU, UInt offsetLuma, UInt offsetChroma, UInt uiAbsPartIdx, UInt uiDepth, UInt width, UInt height, UInt uiTrIdx, Bool& bCodeDQP );212 Void xDecodeTransform ( TComDataCU* pcCU, UInt offsetLuma, UInt offsetChroma, UInt uiAbsPartIdx, UInt uiDepth, UInt width, UInt height, UInt uiTrIdx, Bool& bCodeDQP, Int getQuadtreeTULog2MinSizeInCU ); 213 213 214 214 public: -
branches/HTM-10.0-dev0/source/Lib/TLibDecoder/TDecGop.cpp
r655 r852 4 4 * granted under this license. 5 5 * 6 * Copyright (c) 2010-2013, ITU/ISO/IEC6 * Copyright (c) 2010-2014, ITU/ISO/IEC 7 7 * All rights reserved. 8 8 * … … 43 43 #include "libmd5/MD5.h" 44 44 #include "TLibCommon/SEI.h" 45 46 45 #include <time.h> 47 46 … … 112 111 //-- For time output for each slice 113 112 long iBeforeTime = clock(); 114 115 UInt uiStartCUAddr = pcSlice->getSliceSegmentCurStartCUAddr();116 117 UInt uiSliceStartCuAddr = pcSlice->getSliceCurStartCUAddr();118 if(uiSliceStartCuAddr == uiStartCUAddr)119 {120 m_sliceStartCUAddress.push_back(uiSliceStartCuAddr);121 }122 123 113 m_pcSbacDecoder->init( (TDecBinIf*)m_pcBinCABAC ); 124 114 m_pcEntropyDecoder->setEntropyDecoder (m_pcSbacDecoder); … … 147 137 m_pcEntropyDecoder->setBitstream ( ppcSubstreams[0] ); 148 138 m_pcEntropyDecoder->resetEntropy (pcSlice); 149 150 if(uiSliceStartCuAddr == uiStartCUAddr)151 {152 m_LFCrossSliceBoundaryFlag.push_back( pcSlice->getLFCrossSliceBoundaryFlag());153 }154 139 #if H_3D_NBDV 155 140 if(pcSlice->getViewIndex() && !pcSlice->getIsDepth()) //Notes from QC: this condition shall be changed once the configuration is completed, e.g. in pcSlice->getSPS()->getMultiviewMvPredMode() || ARP in prev. HTM. Remove this comment once it is done. … … 199 184 m_pcLoopFilter->setCfg(bLFCrossTileBoundary); 200 185 m_pcLoopFilter->loopFilterPic( rpcPic ); 201 202 if(pcSlice->getSPS()->getUseSAO())203 {204 m_sliceStartCUAddress.push_back(rpcPic->getNumCUsInFrame()* rpcPic->getNumPartInCU());205 rpcPic->createNonDBFilterInfo(m_sliceStartCUAddress, 0, &m_LFCrossSliceBoundaryFlag, rpcPic->getPicSym()->getNumTiles(), bLFCrossTileBoundary);206 }207 208 186 if( pcSlice->getSPS()->getUseSAO() ) 209 187 { 210 { 211 SAOParam *saoParam = rpcPic->getPicSym()->getSaoParam(); 212 saoParam->bSaoFlag[0] = pcSlice->getSaoEnabledFlag(); 213 saoParam->bSaoFlag[1] = pcSlice->getSaoEnabledFlagChroma(); 214 m_pcSAO->setSaoLcuBasedOptimization(1); 215 m_pcSAO->createPicSaoInfo(rpcPic); 216 m_pcSAO->SAOProcess(saoParam); 217 m_pcSAO->PCMLFDisableProcess(rpcPic); 218 m_pcSAO->destroyPicSaoInfo(); 219 } 220 } 221 222 if(pcSlice->getSPS()->getUseSAO()) 223 { 224 rpcPic->destroyNonDBFilterInfo(); 188 m_pcSAO->reconstructBlkSAOParams(rpcPic, rpcPic->getPicSym()->getSAOBlkParam()); 189 m_pcSAO->SAOProcess(rpcPic); 190 m_pcSAO->PCMLFDisableProcess(rpcPic); 225 191 } 226 192 #if H_3D … … 284 250 rpcPic->setOutputMark(true); 285 251 rpcPic->setReconMark(true); 286 m_sliceStartCUAddress.clear();287 m_LFCrossSliceBoundaryFlag.clear();288 252 } 289 253 -
branches/HTM-10.0-dev0/source/Lib/TLibDecoder/TDecGop.h
r608 r852 4 4 * granted under this license. 5 5 * 6 * Copyright (c) 2010-2013, ITU/ISO/IEC6 * Copyright (c) 2010-2014, ITU/ISO/IEC 7 7 * All rights reserved. 8 8 * … … 83 83 Int m_decodedPictureHashSEIEnabled; ///< Checksum(3)/CRC(2)/MD5(1)/disable(0) acting on decoded picture hash SEI message 84 84 85 //! list that contains the CU address of each slice plus the end address86 std::vector<Int> m_sliceStartCUAddress;87 std::vector<Bool> m_LFCrossSliceBoundaryFlag;88 89 85 public: 90 86 TDecGop(); -
branches/HTM-10.0-dev0/source/Lib/TLibDecoder/TDecSbac.cpp
r833 r852 4 4 * granted under this license. 5 5 * 6 * Copyright (c) 2010-2013, ITU/ISO/IEC6 * Copyright (c) 2010-2014, ITU/ISO/IEC 7 7 * All rights reserved. 8 8 * … … 78 78 , m_cCUAbsSCModel ( 1, 1, NUM_ABS_FLAG_CTX , m_contextModels + m_numContextModels, m_numContextModels) 79 79 , m_cMVPIdxSCModel ( 1, 1, NUM_MVP_IDX_CTX , m_contextModels + m_numContextModels, m_numContextModels) 80 , m_cCUAMPSCModel ( 1, 1, NUM_CU_AMP_CTX , m_contextModels + m_numContextModels, m_numContextModels)81 80 , m_cSaoMergeSCModel ( 1, 1, NUM_SAO_MERGE_FLAG_CTX , m_contextModels + m_numContextModels, m_numContextModels) 82 81 , m_cSaoTypeIdxSCModel ( 1, 1, NUM_SAO_TYPE_IDX_CTX , m_contextModels + m_numContextModels, m_numContextModels) … … 155 154 #endif 156 155 m_cCUPartSizeSCModel.initBuffer ( sliceType, qp, (UChar*)INIT_PART_SIZE ); 157 m_cCUAMPSCModel.initBuffer ( sliceType, qp, (UChar*)INIT_CU_AMP_POS );158 156 m_cCUPredModeSCModel.initBuffer ( sliceType, qp, (UChar*)INIT_PRED_MODE ); 159 157 m_cCUIntraPredSCModel.initBuffer ( sliceType, qp, (UChar*)INIT_INTRA_PRED_MODE ); … … 236 234 #endif 237 235 m_cCUPartSizeSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_PART_SIZE ); 238 m_cCUAMPSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_CU_AMP_POS );239 236 m_cCUPredModeSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_PRED_MODE ); 240 237 m_cCUIntraPredSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_INTRA_PRED_MODE ); … … 906 903 if (eMode == SIZE_2NxN) 907 904 { 908 m_pcTDecBinIf->decodeBin(uiSymbol, m_cCUAMPSCModel.get( 0, 0, 0));905 m_pcTDecBinIf->decodeBin(uiSymbol, m_cCUPartSizeSCModel.get( 0, 0, 3 )); 909 906 if (uiSymbol == 0) 910 907 { … … 915 912 else if (eMode == SIZE_Nx2N) 916 913 { 917 m_pcTDecBinIf->decodeBin(uiSymbol, m_cCUAMPSCModel.get( 0, 0, 0));914 m_pcTDecBinIf->decodeBin(uiSymbol, m_cCUPartSizeSCModel.get( 0, 0, 3 )); 918 915 if (uiSymbol == 0) 919 916 { … … 2009 2006 if (uiCode == 0) 2010 2007 { 2011 ruiVal = 5;2008 ruiVal = 1; 2012 2009 } 2013 2010 else 2014 2011 { 2015 ruiVal = 1; 2016 } 2017 } 2018 } 2019 2020 inline Void copySaoOneLcuParam(SaoLcuParam* psDst, SaoLcuParam* psSrc) 2021 { 2022 Int i; 2023 psDst->partIdx = psSrc->partIdx; 2024 psDst->typeIdx = psSrc->typeIdx; 2025 if (psDst->typeIdx != -1) 2026 { 2027 psDst->subTypeIdx = psSrc->subTypeIdx ; 2028 psDst->length = psSrc->length; 2029 for (i=0;i<psDst->length;i++) 2030 { 2031 psDst->offset[i] = psSrc->offset[i]; 2032 } 2033 } 2034 else 2035 { 2036 psDst->length = 0; 2037 for (i=0;i<SAO_BO_LEN;i++) 2038 { 2039 psDst->offset[i] = 0; 2040 } 2041 } 2042 } 2043 2044 Void TDecSbac::parseSaoOffset(SaoLcuParam* psSaoLcuParam, UInt compIdx) 2012 ruiVal = 2; 2013 } 2014 } 2015 } 2016 2017 Void TDecSbac::parseSaoSign(UInt& val) 2018 { 2019 m_pcTDecBinIf->decodeBinEP ( val ); 2020 } 2021 2022 Void TDecSbac::parseSAOBlkParam (SAOBlkParam& saoBlkParam 2023 , Bool* sliceEnabled 2024 , Bool leftMergeAvail 2025 , Bool aboveMergeAvail 2026 ) 2045 2027 { 2046 2028 UInt uiSymbol; 2047 static Int iTypeLength[MAX_NUM_SAO_TYPE] = 2048 { 2049 SAO_EO_LEN, 2050 SAO_EO_LEN, 2051 SAO_EO_LEN, 2052 SAO_EO_LEN, 2053 SAO_BO_LEN 2054 }; 2055 2056 if (compIdx==2) 2057 { 2058 uiSymbol = (UInt)( psSaoLcuParam->typeIdx + 1); 2059 } 2060 else 2061 { 2062 parseSaoTypeIdx(uiSymbol); 2063 } 2064 psSaoLcuParam->typeIdx = (Int)uiSymbol - 1; 2065 if (uiSymbol) 2066 { 2067 psSaoLcuParam->length = iTypeLength[psSaoLcuParam->typeIdx]; 2068 2069 Int bitDepth = compIdx ? g_bitDepthC : g_bitDepthY; 2070 Int offsetTh = 1 << min(bitDepth - 5,5); 2071 2072 if( psSaoLcuParam->typeIdx == SAO_BO ) 2073 { 2074 for(Int i=0; i< psSaoLcuParam->length; i++) 2075 { 2076 parseSaoMaxUvlc(uiSymbol, offsetTh -1 ); 2077 psSaoLcuParam->offset[i] = uiSymbol; 2029 2030 Bool isLeftMerge = false; 2031 Bool isAboveMerge= false; 2032 2033 if(leftMergeAvail) 2034 { 2035 parseSaoMerge(uiSymbol); //sao_merge_left_flag 2036 isLeftMerge = (uiSymbol?true:false); 2037 } 2038 2039 if( aboveMergeAvail && !isLeftMerge) 2040 { 2041 parseSaoMerge(uiSymbol); //sao_merge_up_flag 2042 isAboveMerge = (uiSymbol?true:false); 2043 } 2044 2045 if(isLeftMerge || isAboveMerge) //merge mode 2046 { 2047 saoBlkParam[SAO_Y].modeIdc = saoBlkParam[SAO_Cb].modeIdc = saoBlkParam[SAO_Cr].modeIdc = SAO_MODE_MERGE; 2048 saoBlkParam[SAO_Y].typeIdc = saoBlkParam[SAO_Cb].typeIdc = saoBlkParam[SAO_Cr].typeIdc = (isLeftMerge)?SAO_MERGE_LEFT:SAO_MERGE_ABOVE; 2078 2049 } 2079 for(Int i=0; i< psSaoLcuParam->length; i++) 2080 { 2081 if (psSaoLcuParam->offset[i] != 0) 2082 { 2083 m_pcTDecBinIf->decodeBinEP ( uiSymbol); 2084 if (uiSymbol) 2050 else //new or off mode 2051 { 2052 for(Int compIdx=0; compIdx < NUM_SAO_COMPONENTS; compIdx++) 2053 { 2054 SAOOffset& ctbParam = saoBlkParam[compIdx]; 2055 2056 if(!sliceEnabled[compIdx]) 2085 2057 { 2086 psSaoLcuParam->offset[i] = -psSaoLcuParam->offset[i] ; 2087 } 2088 } 2089 } 2090 parseSaoUflc(5, uiSymbol ); 2091 psSaoLcuParam->subTypeIdx = uiSymbol; 2092 } 2093 else if( psSaoLcuParam->typeIdx < 4 ) 2094 { 2095 parseSaoMaxUvlc(uiSymbol, offsetTh -1 ); psSaoLcuParam->offset[0] = uiSymbol; 2096 parseSaoMaxUvlc(uiSymbol, offsetTh -1 ); psSaoLcuParam->offset[1] = uiSymbol; 2097 parseSaoMaxUvlc(uiSymbol, offsetTh -1 ); psSaoLcuParam->offset[2] = -(Int)uiSymbol; 2098 parseSaoMaxUvlc(uiSymbol, offsetTh -1 ); psSaoLcuParam->offset[3] = -(Int)uiSymbol; 2099 if (compIdx != 2) 2058 //off 2059 ctbParam.modeIdc = SAO_MODE_OFF; 2060 continue; 2061 } 2062 2063 //type 2064 if(compIdx == SAO_Y || compIdx == SAO_Cb) 2065 { 2066 parseSaoTypeIdx(uiSymbol); //sao_type_idx_luma or sao_type_idx_chroma 2067 2068 assert(uiSymbol ==0 || uiSymbol ==1 || uiSymbol ==2); 2069 2070 if(uiSymbol ==0) //OFF 2100 2071 { 2101 parseSaoUflc(2, uiSymbol ); 2102 psSaoLcuParam->subTypeIdx = uiSymbol; 2103 psSaoLcuParam->typeIdx += psSaoLcuParam->subTypeIdx; 2104 } 2072 ctbParam.modeIdc = SAO_MODE_OFF; 2105 2073 } 2106 } 2107 else 2108 { 2109 psSaoLcuParam->length = 0; 2110 } 2111 } 2112 2113 Void TDecSbac::parseSaoOneLcuInterleaving(Int rx, Int ry, SAOParam* pSaoParam, TComDataCU* pcCU, Int iCUAddrInSlice, Int iCUAddrUpInSlice, Int allowMergeLeft, Int allowMergeUp) 2114 { 2115 Int iAddr = pcCU->getAddr(); 2116 UInt uiSymbol; 2117 for (Int iCompIdx=0; iCompIdx<3; iCompIdx++) 2118 { 2119 pSaoParam->saoLcuParam[iCompIdx][iAddr].mergeUpFlag = 0; 2120 pSaoParam->saoLcuParam[iCompIdx][iAddr].mergeLeftFlag = 0; 2121 pSaoParam->saoLcuParam[iCompIdx][iAddr].subTypeIdx = 0; 2122 pSaoParam->saoLcuParam[iCompIdx][iAddr].typeIdx = -1; 2123 pSaoParam->saoLcuParam[iCompIdx][iAddr].offset[0] = 0; 2124 pSaoParam->saoLcuParam[iCompIdx][iAddr].offset[1] = 0; 2125 pSaoParam->saoLcuParam[iCompIdx][iAddr].offset[2] = 0; 2126 pSaoParam->saoLcuParam[iCompIdx][iAddr].offset[3] = 0; 2127 2128 } 2129 if (pSaoParam->bSaoFlag[0] || pSaoParam->bSaoFlag[1] ) 2130 { 2131 if (rx>0 && iCUAddrInSlice!=0 && allowMergeLeft) 2132 { 2133 parseSaoMerge(uiSymbol); 2134 pSaoParam->saoLcuParam[0][iAddr].mergeLeftFlag = (Bool)uiSymbol; 2135 } 2136 if (pSaoParam->saoLcuParam[0][iAddr].mergeLeftFlag==0) 2137 { 2138 if ((ry > 0) && (iCUAddrUpInSlice>=0) && allowMergeUp) 2139 { 2140 parseSaoMerge(uiSymbol); 2141 pSaoParam->saoLcuParam[0][iAddr].mergeUpFlag = (Bool)uiSymbol; 2142 } 2143 } 2144 } 2145 2146 for (Int iCompIdx=0; iCompIdx<3; iCompIdx++) 2147 { 2148 if ((iCompIdx == 0 && pSaoParam->bSaoFlag[0]) || (iCompIdx > 0 && pSaoParam->bSaoFlag[1]) ) 2149 { 2150 if (rx>0 && iCUAddrInSlice!=0 && allowMergeLeft) 2151 { 2152 pSaoParam->saoLcuParam[iCompIdx][iAddr].mergeLeftFlag = pSaoParam->saoLcuParam[0][iAddr].mergeLeftFlag; 2153 } 2154 else 2155 { 2156 pSaoParam->saoLcuParam[iCompIdx][iAddr].mergeLeftFlag = 0; 2157 } 2158 2159 if (pSaoParam->saoLcuParam[iCompIdx][iAddr].mergeLeftFlag==0) 2160 { 2161 if ((ry > 0) && (iCUAddrUpInSlice>=0) && allowMergeUp) 2162 { 2163 pSaoParam->saoLcuParam[iCompIdx][iAddr].mergeUpFlag = pSaoParam->saoLcuParam[0][iAddr].mergeUpFlag; 2074 else if(uiSymbol == 1) //BO 2075 { 2076 ctbParam.modeIdc = SAO_MODE_NEW; 2077 ctbParam.typeIdc = SAO_TYPE_START_BO; 2078 } 2079 else //2, EO 2080 { 2081 ctbParam.modeIdc = SAO_MODE_NEW; 2082 ctbParam.typeIdc = SAO_TYPE_START_EO; 2083 } 2084 2085 } 2086 else //Cr, follow Cb SAO type 2087 { 2088 ctbParam.modeIdc = saoBlkParam[SAO_Cb].modeIdc; 2089 ctbParam.typeIdc = saoBlkParam[SAO_Cb].typeIdc; 2090 } 2091 2092 if(ctbParam.modeIdc == SAO_MODE_NEW) 2093 { 2094 Int offset[4]; 2095 for(Int i=0; i< 4; i++) 2096 { 2097 parseSaoMaxUvlc(uiSymbol, g_saoMaxOffsetQVal[compIdx] ); //sao_offset_abs 2098 offset[i] = (Int)uiSymbol; 2099 } 2100 2101 if(ctbParam.typeIdc == SAO_TYPE_START_BO) 2102 { 2103 for(Int i=0; i< 4; i++) 2104 { 2105 if(offset[i] != 0) 2106 { 2107 parseSaoSign(uiSymbol); //sao_offset_sign 2108 if(uiSymbol) 2109 { 2110 offset[i] = -offset[i]; 2111 } 2112 } 2113 } 2114 parseSaoUflc(NUM_SAO_BO_CLASSES_LOG2, uiSymbol ); //sao_band_position 2115 ctbParam.typeAuxInfo = uiSymbol; 2116 2117 for(Int i=0; i<4; i++) 2118 { 2119 ctbParam.offset[(ctbParam.typeAuxInfo+i)%MAX_NUM_SAO_CLASSES] = offset[i]; 2120 } 2121 2122 } 2123 else //EO 2124 { 2125 ctbParam.typeAuxInfo = 0; 2126 2127 if(compIdx == SAO_Y || compIdx == SAO_Cb) 2128 { 2129 parseSaoUflc(NUM_SAO_EO_TYPES_LOG2, uiSymbol ); //sao_eo_class_luma or sao_eo_class_chroma 2130 ctbParam.typeIdc += uiSymbol; 2164 2131 } 2165 2132 else 2166 2133 { 2167 pSaoParam->saoLcuParam[iCompIdx][iAddr].mergeUpFlag = 0; 2168 } 2169 if (!pSaoParam->saoLcuParam[iCompIdx][iAddr].mergeUpFlag) 2170 { 2171 pSaoParam->saoLcuParam[2][iAddr].typeIdx = pSaoParam->saoLcuParam[1][iAddr].typeIdx; 2172 parseSaoOffset(&(pSaoParam->saoLcuParam[iCompIdx][iAddr]), iCompIdx); 2173 } 2174 else 2175 { 2176 copySaoOneLcuParam(&pSaoParam->saoLcuParam[iCompIdx][iAddr], &pSaoParam->saoLcuParam[iCompIdx][iAddr-pSaoParam->numCuInWidth]); 2177 } 2178 } 2179 else 2180 { 2181 copySaoOneLcuParam(&pSaoParam->saoLcuParam[iCompIdx][iAddr], &pSaoParam->saoLcuParam[iCompIdx][iAddr-1]); 2182 } 2183 } 2184 else 2185 { 2186 pSaoParam->saoLcuParam[iCompIdx][iAddr].typeIdx = -1; 2187 pSaoParam->saoLcuParam[iCompIdx][iAddr].subTypeIdx = 0; 2134 ctbParam.typeIdc = saoBlkParam[SAO_Cb].typeIdc; 2135 } 2136 ctbParam.offset[SAO_CLASS_EO_FULL_VALLEY] = offset[0]; 2137 ctbParam.offset[SAO_CLASS_EO_HALF_VALLEY] = offset[1]; 2138 ctbParam.offset[SAO_CLASS_EO_PLAIN ] = 0; 2139 ctbParam.offset[SAO_CLASS_EO_HALF_PEAK ] = -offset[2]; 2140 ctbParam.offset[SAO_CLASS_EO_FULL_PEAK ] = -offset[3]; 2141 } 2142 } 2188 2143 } 2189 2144 } … … 2424 2379 #endif 2425 2380 2381 2382 2426 2383 //! \} -
branches/HTM-10.0-dev0/source/Lib/TLibDecoder/TDecSbac.h
r833 r852 4 4 * granted under this license. 5 5 * 6 * Copyright (c) 2010-2013, ITU/ISO/IEC6 * Copyright (c) 2010-2014, ITU/ISO/IEC 7 7 * All rights reserved. 8 8 * … … 94 94 Void parseSaoTypeIdx ( UInt& ruiVal ); 95 95 Void parseSaoUflc ( UInt uiLength, UInt& ruiVal ); 96 Void parseSaoOneLcuInterleaving(Int rx, Int ry, SAOParam* pSaoParam, TComDataCU* pcCU, Int iCUAddrInSlice, Int iCUAddrUpInSlice, Int allowMergeLeft, Int allowMergeUp);97 Void parseSaoOffset (SaoLcuParam* psSaoLcuParam, UInt compIdx);96 Void parseSAOBlkParam (SAOBlkParam& saoBlkParam, Bool* sliceEnabled, Bool leftMergeAvail, Bool aboveMergeAvail); 97 Void parseSaoSign(UInt& val); 98 98 private: 99 99 Void xReadUnarySymbol ( UInt& ruiSymbol, ContextModel* pcSCModel, Int iOffset ); … … 209 209 ContextModel3DBuffer m_cMVPIdxSCModel; 210 210 211 ContextModel3DBuffer m_cCUAMPSCModel;212 211 ContextModel3DBuffer m_cSaoMergeSCModel; 213 212 ContextModel3DBuffer m_cSaoTypeIdxSCModel; -
branches/HTM-10.0-dev0/source/Lib/TLibDecoder/TDecSlice.cpp
r608 r852 4 4 * granted under this license. 5 5 * 6 * Copyright (c) 2010-2013, ITU/ISO/IEC6 * Copyright (c) 2010-2014, ITU/ISO/IEC 7 7 * All rights reserved. 8 8 * … … 313 313 g_bJustDoIt = g_bEncDecTraceEnable; 314 314 #endif 315 if ( pcSlice->getSPS()->getUseSAO() && (pcSlice->getSaoEnabledFlag()||pcSlice->getSaoEnabledFlagChroma()) ) 316 { 317 SAOParam *saoParam = rpcPic->getPicSym()->getSaoParam(); 318 saoParam->bSaoFlag[0] = pcSlice->getSaoEnabledFlag(); 319 if (iCUAddr == iStartCUAddr) 320 { 321 saoParam->bSaoFlag[1] = pcSlice->getSaoEnabledFlagChroma(); 322 } 323 Int numCuInWidth = saoParam->numCuInWidth; 324 Int cuAddrInSlice = iCUAddr - rpcPic->getPicSym()->getCUOrderMap(pcSlice->getSliceCurStartCUAddr()/rpcPic->getNumPartInCU()); 325 Int cuAddrUpInSlice = cuAddrInSlice - numCuInWidth; 326 Int rx = iCUAddr % numCuInWidth; 327 Int ry = iCUAddr / numCuInWidth; 328 Int allowMergeLeft = 1; 329 Int allowMergeUp = 1; 330 if (rx!=0) 331 { 332 if (rpcPic->getPicSym()->getTileIdxMap(iCUAddr-1) != rpcPic->getPicSym()->getTileIdxMap(iCUAddr)) 333 { 334 allowMergeLeft = 0; 335 } 336 } 337 if (ry!=0) 338 { 339 if (rpcPic->getPicSym()->getTileIdxMap(iCUAddr-numCuInWidth) != rpcPic->getPicSym()->getTileIdxMap(iCUAddr)) 340 { 341 allowMergeUp = 0; 342 } 343 } 344 pcSbacDecoder->parseSaoOneLcuInterleaving(rx, ry, saoParam,pcCU, cuAddrInSlice, cuAddrUpInSlice, allowMergeLeft, allowMergeUp); 345 } 346 else if ( pcSlice->getSPS()->getUseSAO() ) 347 { 348 Int addr = pcCU->getAddr(); 349 SAOParam *saoParam = rpcPic->getPicSym()->getSaoParam(); 350 for (Int cIdx=0; cIdx<3; cIdx++) 351 { 352 SaoLcuParam *saoLcuParam = &(saoParam->saoLcuParam[cIdx][addr]); 353 if ( ((cIdx == 0) && !pcSlice->getSaoEnabledFlag()) || ((cIdx == 1 || cIdx == 2) && !pcSlice->getSaoEnabledFlagChroma())) 354 { 355 saoLcuParam->mergeUpFlag = 0; 356 saoLcuParam->mergeLeftFlag = 0; 357 saoLcuParam->subTypeIdx = 0; 358 saoLcuParam->typeIdx = -1; 359 saoLcuParam->offset[0] = 0; 360 saoLcuParam->offset[1] = 0; 361 saoLcuParam->offset[2] = 0; 362 saoLcuParam->offset[3] = 0; 363 } 315 316 if ( pcSlice->getSPS()->getUseSAO() ) 317 { 318 SAOBlkParam& saoblkParam = (rpcPic->getPicSym()->getSAOBlkParam())[iCUAddr]; 319 if (pcSlice->getSaoEnabledFlag()||pcSlice->getSaoEnabledFlagChroma()) 320 { 321 Bool sliceEnabled[NUM_SAO_COMPONENTS]; 322 sliceEnabled[SAO_Y] = pcSlice->getSaoEnabledFlag(); 323 sliceEnabled[SAO_Cb]= sliceEnabled[SAO_Cr]= pcSlice->getSaoEnabledFlagChroma(); 324 325 Bool leftMergeAvail = false; 326 Bool aboveMergeAvail= false; 327 328 //merge left condition 329 Int rx = (iCUAddr % uiWidthInLCUs); 330 if(rx > 0) 331 { 332 leftMergeAvail = rpcPic->getSAOMergeAvailability(iCUAddr, iCUAddr-1); 333 } 334 //merge up condition 335 Int ry = (iCUAddr / uiWidthInLCUs); 336 if(ry > 0) 337 { 338 aboveMergeAvail = rpcPic->getSAOMergeAvailability(iCUAddr, iCUAddr-uiWidthInLCUs); 339 } 340 341 pcSbacDecoder->parseSAOBlkParam( saoblkParam, sliceEnabled, leftMergeAvail, aboveMergeAvail); 342 } 343 else 344 { 345 saoblkParam[SAO_Y ].modeIdc = SAO_MODE_OFF; 346 saoblkParam[SAO_Cb].modeIdc = SAO_MODE_OFF; 347 saoblkParam[SAO_Cr].modeIdc = SAO_MODE_OFF; 364 348 } 365 349 } -
branches/HTM-10.0-dev0/source/Lib/TLibDecoder/TDecSlice.h
r655 r852 4 4 * granted under this license. 5 5 * 6 * Copyright (c) 2010-2013, ITU/ISO/IEC6 * Copyright (c) 2010-2014, ITU/ISO/IEC 7 7 * All rights reserved. 8 8 * -
branches/HTM-10.0-dev0/source/Lib/TLibDecoder/TDecTop.cpp
r773 r852 4 4 * granted under this license. 5 5 * 6 * Copyright (c) 2010-2013, ITU/ISO/IEC6 * Copyright (c) 2010-2014, ITU/ISO/IEC 7 7 * All rights reserved. 8 8 * … … 467 467 rpcPic->create ( pcSlice->getSPS()->getPicWidthInLumaSamples(), pcSlice->getSPS()->getPicHeightInLumaSamples(), g_uiMaxCUWidth, g_uiMaxCUHeight, g_uiMaxCUDepth, 468 468 conformanceWindow, defaultDisplayWindow, numReorderPics, true); 469 rpcPic->getPicSym()->allocSaoParam(&m_cSAO);470 469 m_cListPic.pushBack( rpcPic ); 471 470 … … 505 504 rpcPic->create ( pcSlice->getSPS()->getPicWidthInLumaSamples(), pcSlice->getSPS()->getPicHeightInLumaSamples(), g_uiMaxCUWidth, g_uiMaxCUHeight, g_uiMaxCUDepth, 506 505 conformanceWindow, defaultDisplayWindow, numReorderPics, true); 507 rpcPic->getPicSym()->allocSaoParam(&m_cSAO);508 506 } 509 507 … … 662 660 663 661 m_cSAO.destroy(); 664 m_cSAO.create( sps->getPicWidthInLumaSamples(), sps->getPicHeightInLumaSamples(), sps->getMaxCUWidth(), sps->getMaxCUHeight() );662 m_cSAO.create( sps->getPicWidthInLumaSamples(), sps->getPicHeightInLumaSamples(), sps->getMaxCUWidth(), sps->getMaxCUHeight(), sps->getMaxCUDepth() ); 665 663 m_cLoopFilter.create( sps->getMaxCUDepth() ); 666 664 } … … 670 668 { 671 669 assert( nalu.m_layerId == m_layerId ); 672 673 670 #else 674 671 Bool TDecTop::xDecodeSlice(InputNALUnit &nalu, Int &iSkipFrame, Int iPOCLastDisplay ) … … 682 679 m_uiSliceIdx = 0; 683 680 } 681 else 682 { 683 m_apcSlicePilot->copySliceInfo( pcPic->getPicSym()->getSlice(m_uiSliceIdx-1) ); 684 } 684 685 m_apcSlicePilot->setSliceIdx(m_uiSliceIdx); 685 if (!m_bFirstSliceInPicture)686 {687 m_apcSlicePilot->copySliceInfo( pcPic->getPicSym()->getSlice(m_uiSliceIdx-1) );688 }689 686 690 687 m_apcSlicePilot->setNalUnitType(nalu.m_nalUnitType); … … 994 991 #endif 995 992 #else 996 #if FIX1071997 993 pcSlice->setRefPicList( m_cListPic, true ); 998 #else999 pcSlice->setRefPicList( m_cListPic );1000 #endif1001 1002 994 #endif 1003 995 … … 1215 1207 case NAL_UNIT_CODED_SLICE_TRAIL_R: 1216 1208 case NAL_UNIT_CODED_SLICE_TRAIL_N: 1217 case NAL_UNIT_CODED_SLICE_T LA_R:1209 case NAL_UNIT_CODED_SLICE_TSA_R: 1218 1210 case NAL_UNIT_CODED_SLICE_TSA_N: 1219 1211 case NAL_UNIT_CODED_SLICE_STSA_R: … … 1235 1227 #endif 1236 1228 break; 1229 case NAL_UNIT_EOS: 1230 m_associatedIRAPType = NAL_UNIT_INVALID; 1231 m_pocCRA = 0; 1232 m_pocRandomAccess = MAX_INT; 1233 m_prevPOC = MAX_INT; 1234 m_bFirstSliceInPicture = true; 1235 m_bFirstSliceInSequence = true; 1236 m_prevSliceSkipped = false; 1237 m_skippedPOC = 0; 1238 return false; 1239 1240 case NAL_UNIT_ACCESS_UNIT_DELIMITER: 1241 // TODO: process AU delimiter 1242 return false; 1243 1244 case NAL_UNIT_EOB: 1245 return false; 1246 1247 1248 case NAL_UNIT_RESERVED_VCL_N10: 1249 case NAL_UNIT_RESERVED_VCL_R11: 1250 case NAL_UNIT_RESERVED_VCL_N12: 1251 case NAL_UNIT_RESERVED_VCL_R13: 1252 case NAL_UNIT_RESERVED_VCL_N14: 1253 case NAL_UNIT_RESERVED_VCL_R15: 1254 1255 case NAL_UNIT_RESERVED_IRAP_VCL22: 1256 case NAL_UNIT_RESERVED_IRAP_VCL23: 1257 1258 case NAL_UNIT_RESERVED_VCL24: 1259 case NAL_UNIT_RESERVED_VCL25: 1260 case NAL_UNIT_RESERVED_VCL26: 1261 case NAL_UNIT_RESERVED_VCL27: 1262 case NAL_UNIT_RESERVED_VCL28: 1263 case NAL_UNIT_RESERVED_VCL29: 1264 case NAL_UNIT_RESERVED_VCL30: 1265 case NAL_UNIT_RESERVED_VCL31: 1266 1267 case NAL_UNIT_FILLER_DATA: 1268 case NAL_UNIT_RESERVED_NVCL41: 1269 case NAL_UNIT_RESERVED_NVCL42: 1270 case NAL_UNIT_RESERVED_NVCL43: 1271 case NAL_UNIT_RESERVED_NVCL44: 1272 case NAL_UNIT_RESERVED_NVCL45: 1273 case NAL_UNIT_RESERVED_NVCL46: 1274 case NAL_UNIT_RESERVED_NVCL47: 1275 case NAL_UNIT_UNSPECIFIED_48: 1276 case NAL_UNIT_UNSPECIFIED_49: 1277 case NAL_UNIT_UNSPECIFIED_50: 1278 case NAL_UNIT_UNSPECIFIED_51: 1279 case NAL_UNIT_UNSPECIFIED_52: 1280 case NAL_UNIT_UNSPECIFIED_53: 1281 case NAL_UNIT_UNSPECIFIED_54: 1282 case NAL_UNIT_UNSPECIFIED_55: 1283 case NAL_UNIT_UNSPECIFIED_56: 1284 case NAL_UNIT_UNSPECIFIED_57: 1285 case NAL_UNIT_UNSPECIFIED_58: 1286 case NAL_UNIT_UNSPECIFIED_59: 1287 case NAL_UNIT_UNSPECIFIED_60: 1288 case NAL_UNIT_UNSPECIFIED_61: 1289 case NAL_UNIT_UNSPECIFIED_62: 1290 case NAL_UNIT_UNSPECIFIED_63: 1237 1291 default: 1238 assert ( 1);1292 assert (0); 1239 1293 } 1240 1294 -
branches/HTM-10.0-dev0/source/Lib/TLibDecoder/TDecTop.h
r833 r852 4 4 * granted under this license. 5 5 * 6 * Copyright (c) 2010-2013, ITU/ISO/IEC6 * Copyright (c) 2010-2014, ITU/ISO/IEC 7 7 * All rights reserved. 8 8 *
Note: See TracChangeset for help on using the changeset viewer.