Void TDecEntropy::decodeAlfParam(ALFParam* pAlfParam) { UInt uiSymbol; Int iSymbol; m_pcEntropyDecoderIf->parseAlfFlag(uiSymbol); pAlfParam->alf_flag = uiSymbol; if (!pAlfParam->alf_flag) { m_pcEntropyDecoderIf->setAlfCtrl(false); m_pcEntropyDecoderIf->setMaxAlfCtrlDepth(0); //unncessary return; } Int pos; decodeAux(pAlfParam); decodeFilt(pAlfParam); // filter parameters for chroma m_pcEntropyDecoderIf->parseAlfUvlc(uiSymbol); pAlfParam->chroma_idc = uiSymbol; if(pAlfParam->chroma_idc) { m_pcEntropyDecoderIf->parseAlfUvlc(uiSymbol); pAlfParam->tap_chroma = (uiSymbol<<1) + 5; pAlfParam->num_coeff_chroma = ((pAlfParam->tap_chroma*pAlfParam->tap_chroma+1)>>1) + 1; // filter coefficients for chroma for(pos=0; pos<pAlfParam->num_coeff_chroma; pos++) { m_pcEntropyDecoderIf->parseAlfSvlc(iSymbol); pAlfParam->coeff_chroma[pos] = iSymbol; } }
Void TDecEntropy::decodeAlfParam(ALFParam* pAlfParam) { UInt uiSymbol; Int iSymbol; if (!pAlfParam->alf_flag) { m_pcEntropyDecoderIf->setAlfCtrl(false); m_pcEntropyDecoderIf->setMaxAlfCtrlDepth(0); //unncessary return; } Int pos; decodeAux(pAlfParam); decodeFilt(pAlfParam); // filter parameters for chroma m_pcEntropyDecoderIf->parseAlfUvlc(uiSymbol); pAlfParam->chroma_idc = uiSymbol; if(pAlfParam->chroma_idc) { m_pcEntropyDecoderIf->parseAlfUvlc(uiSymbol); Int sqrFiltLengthTab[2] = { 9, 9}; pAlfParam->filter_shape_chroma = uiSymbol; pAlfParam->num_coeff_chroma = sqrFiltLengthTab[pAlfParam->filter_shape_chroma]; // filter coefficients for chroma for(pos=0; pos<pAlfParam->num_coeff_chroma; pos++) { m_pcEntropyDecoderIf->parseAlfSvlc(iSymbol); pAlfParam->coeff_chroma[pos] = iSymbol; } } }