79 for(
UInt buf=0; buf<2; buf++)
185 assert(iWidth > 0 && iHeight > 0);
189 for (iInd = 0;iInd < iWidth;iInd++)
191 iSum += pSrc[iInd-iSrcStride];
193 for (iInd = 0;iInd < iHeight;iInd++)
195 iSum += pSrc[iInd*iSrcStride-1];
198 pDcVal = (iSum + iWidth) / (iWidth + iHeight);
230 const Pel* pSrc,
Int srcStride,
231 Pel* pTrueDst,
Int dstStrideTrue,
233 UInt dirMode,
const Bool bEnableEdgeFilters
248 for (
Int y=height;y>0;y--, pTrueDst+=dstStrideTrue)
250 for (
Int x=0; x<width;)
252 pTrueDst[x++] = dcval;
258 const Bool bIsModeVer = (dirMode >= 18);
260 const Int absAngMode = abs(intraPredAngleMode);
261 const Int signAng = intraPredAngleMode < 0 ? -1 : 1;
265 static const Int angTable[9] = {0, 2, 5, 9, 13, 17, 21, 26, 32};
266 static const Int invAngTable[9] = {0, 4096, 1638, 910, 630, 482, 390, 315, 256};
267 Int invAngle = invAngTable[absAngMode];
268 Int absAng = angTable[absAngMode];
269 Int intraPredAngle = signAng * absAng;
278 if (intraPredAngle < 0)
280 const Int refMainOffsetPreScale = (bIsModeVer ? height : width ) - 1;
281 const Int refMainOffset = height - 1;
282 for (
Int x=0;x<width+1;x++)
284 refAbove[x+refMainOffset] = pSrc[x-srcStride-1];
286 for (
Int y=0;y<height+1;y++)
288 refLeft[y+refMainOffset] = pSrc[(y-1)*srcStride-1];
290 refMain = (bIsModeVer ? refAbove : refLeft) + refMainOffset;
291 refSide = (bIsModeVer ? refLeft : refAbove) + refMainOffset;
294 Int invAngleSum = 128;
295 for (
Int k=-1; k>(refMainOffsetPreScale+1)*intraPredAngle>>5; k--)
297 invAngleSum += invAngle;
298 refMain[k] = refSide[invAngleSum>>8];
303 for (
Int x=0;x<2*width+1;x++)
305 refAbove[x] = pSrc[x-srcStride-1];
307 for (
Int y=0;y<2*height+1;y++)
309 refLeft[y] = pSrc[(y-1)*srcStride-1];
311 refMain = bIsModeVer ? refAbove : refLeft ;
312 refSide = bIsModeVer ? refLeft : refAbove;
318 Pel *pDst = bIsModeVer ? pTrueDst : tempArray;
321 std::swap(width, height);
324 if (intraPredAngle == 0)
326 for (
Int y=0;y<height;y++)
328 for (
Int x=0;x<width;x++)
330 pDst[y*dstStride+x] = refMain[x+1];
336 for (
Int y=0;y<height;y++)
338 pDst[y*dstStride] =
Clip3 (0, ((1 << bitDepth) - 1), pDst[y*dstStride] + (( refSide[y+1] - refSide[0] ) >> 1) );
346 for (
Int y=0, deltaPos=intraPredAngle; y<height; y++, deltaPos+=intraPredAngle, pDsty+=dstStride)
348 const Int deltaInt = deltaPos >> 5;
349 const Int deltaFract = deltaPos & (32 - 1);
354 const Pel *pRM=refMain+deltaInt+1;
355 Int lastRefMainPel=*pRM++;
356 for (
Int x=0;x<width;pRM++,x++)
358 Int thisRefMainPel=*pRM;
359 pDsty[x+0] = (
Pel) ( ((32-deltaFract)*lastRefMainPel + deltaFract*thisRefMainPel +16) >> 5 );
360 lastRefMainPel=thisRefMainPel;
366 for (
Int x=0;x<width; x++)
368 pDsty[x] = refMain[x+deltaInt+1];
377 for (
Int y=0; y<height; y++)
379 for (
Int x=0; x<width; x++)
381 pTrueDst[x*dstStrideTrue] = pDst[x];
404 const Int sw = (2 * iWidth + 1);
406 if ( bUseLosslessDPCM )
414 for(
Int y=0; y<iHeight; y++)
416 piPred[y*uiStride+0] = ptrSrc[(y+1)*sw];
421 for(
Int y=0; y<iHeight; y++, piPred+=uiStride, piOrg+=uiOrgStride)
423 memcpy(piPred, piOrg, (iWidth-1)*
sizeof(
Pel));
431 for(
Int x=0; x<iWidth; x++)
433 piPred[x] = ptrSrc[x+1];
438 for(
Int y=1; y<iHeight; y++, piPred+=uiStride, piOrg+=uiOrgStride)
440 memcpy(piPred, piOrg, iWidth*
sizeof(
Pel));
459 #if O0043_BEST_EFFORT_DECODING
460 const Int channelsBitDepthForPrediction = rTu.
getCU()->
getSlice()->
getSPS()->getStreamBitDepth(channelType);
464 xPredIntraAng( channelsBitDepthForPrediction, ptrSrc+sw+1, sw, pDst, uiStride, iWidth, iHeight, channelType, uiDirMode, enableEdgeFilters );
468 xDCPredFiltering( ptrSrc+sw+1, sw, pDst, uiStride, iWidth, iHeight, channelType );
511 xPredInterUni (pcCU, uiPartAddr, iWidth, iHeight, eRefPicList, pcYuvPred,
true );
516 xPredInterUni (pcCU, uiPartAddr, iWidth, iHeight, eRefPicList, pcYuvPred );
527 xPredInterBi (pcCU, uiPartAddr, iWidth, iHeight, pcYuvPred );
541 xPredInterUni (pcCU, uiPartAddr, iWidth, iHeight, eRefPicList, pcYuvPred,
true );
546 xPredInterUni (pcCU, uiPartAddr, iWidth, iHeight, eRefPicList, pcYuvPred );
557 xPredInterBi (pcCU, uiPartAddr, iWidth, iHeight, pcYuvPred );
573 xPredInterBlk (compID, pcCU, pcCU->
getSlice()->
getRefPic( eRefPicList, iRefIdx )->
getPicYuvRec(), uiPartAddr, &cMv, iWidth, iHeight, pcYuvPred, bi, pcCU->
getSlice()->
getSPS()->
getBitDepth(
toChannelType(compID)) );
587 if ( iRefIdx[refList] < 0 )
597 xPredInterUni ( pcCU, uiPartAddr, iWidth, iHeight, eRefPicList, pcMbYuv,
true );
604 xPredInterUni ( pcCU, uiPartAddr, iWidth, iHeight, eRefPicList, pcMbYuv,
true );
608 xPredInterUni ( pcCU, uiPartAddr, iWidth, iHeight, eRefPicList, pcMbYuv );
650 Int refOffset = (mv->
getHor() >> shiftHor) + (mv->
getVer() >> shiftVer) * refStride;
654 Pel* dst = dstPic->
getAddr( compID, partAddr );
656 Int xFrac = mv->
getHor() & ((1<<shiftHor)-1);
657 Int yFrac = mv->
getVer() & ((1<<shiftVer)-1);
665 m_if.
filterHor(compID, ref, refStride, dst, dstStride, cxWidth, cxHeight, xFrac, !bi, chFmt, bitDepth);
667 else if ( xFrac == 0 )
669 m_if.
filterVer(compID, ref, refStride, dst, dstStride, cxWidth, cxHeight, yFrac,
true, !bi, chFmt, bitDepth);
678 m_if.
filterHor(compID, ref - ((vFilterSize>>1) -1)*refStride, refStride, tmp, tmpStride, cxWidth, cxHeight+vFilterSize-1, xFrac,
false, chFmt, bitDepth);
679 m_if.
filterVer(compID, tmp + ((vFilterSize>>1) -1)*tmpStride, tmpStride, dst, dstStride, cxWidth, cxHeight, yFrac,
false, !bi, chFmt, bitDepth);
685 if( iRefIdx0 >= 0 && iRefIdx1 >= 0 )
687 pcYuvDst->
addAvg( pcYuvSrc0, pcYuvSrc1, uiPartIdx, iWidth, iHeight, clipBitDepths );
689 else if ( iRefIdx0 >= 0 && iRefIdx1 < 0 )
693 else if ( iRefIdx0 < 0 && iRefIdx1 >= 0 )
704 if( pcAMVPInfo->
iN <= 1 )
713 assert(pcCU->
getMVPIdx(eRefPicList,uiPartAddr) >= 0);
733 assert(width <= height);
740 for(
Int k=0;k<width+1;k++)
742 topRow[k] = pSrc[k-srcStride];
745 for (
Int k=0; k < height+1; k++)
747 leftColumn[k] = pSrc[k*srcStride-1];
751 Int bottomLeft = leftColumn[height];
752 Int topRight = topRow[width];
754 for(
Int k=0;k<width;k++)
756 bottomRow[k] = bottomLeft - topRow[k];
757 topRow[k] <<= shift1Dver;
760 for(
Int k=0;k<height;k++)
762 rightColumn[k] = topRight - leftColumn[k];
763 leftColumn[k] <<= shift1Dhor;
766 const UInt topRowShift = 0;
769 for (
Int y=0;y<height;y++)
771 Int horPred = leftColumn[y] + width;
772 for (
Int x=0;x<width;x++)
774 horPred += rightColumn[y];
775 topRow[x] += bottomRow[x];
777 Int vertPred = ((topRow[x] + topRowShift)>>topRowShift);
778 rpDst[y*dstStride+x] = ( horPred + vertPred ) >> (shift1Dhor+1);
796 Int x, y, iDstStride2, iSrcStride2;
801 pDst[0] = (
Pel)((pSrc[-iSrcStride] + pSrc[-1] + 2 * pDst[0] + 2) >> 2);
804 for ( x = 1; x < iWidth; x++ )
806 pDst[x] = (
Pel)((pSrc[x - iSrcStride] + 3 * pDst[x] + 2) >> 2);
810 for ( y = 1, iDstStride2 = iDstStride, iSrcStride2 = iSrcStride-1; y < iHeight; y++, iDstStride2+=iDstStride, iSrcStride2+=iSrcStride )
812 pDst[iDstStride2] = (
Pel)((pSrc[iSrcStride2] + 3 * pDst[iDstStride2] + 2) >> 2);
839 ruiPredXRight = ruiPredXLeft + iWidth;
840 ruiPredYBottom = ruiPredYTop + iHeight;
844 ruiPredXRight = ruiPredXLeft + iWidth;
845 ruiPredYBottom = ruiPredYTop + (iHeight << 1);
846 ruiPredYTop += iHeight;
852 ruiPredXRight = ruiPredXLeft + iWidth;
853 ruiPredYBottom = ruiPredYTop + iHeight;
857 ruiPredXRight = ruiPredXLeft + (iWidth << 1);
858 ruiPredYBottom = ruiPredYTop + iHeight;
859 ruiPredXLeft += iWidth;
865 ruiPredXRight = ruiPredXLeft + iWidth;
866 ruiPredYBottom = ruiPredYTop + iHeight;
868 else if (uiPartIdx == 1)
870 ruiPredXRight = ruiPredXLeft + (iWidth << 1);
871 ruiPredYBottom = ruiPredYTop + iHeight;
872 ruiPredXLeft += iWidth;
874 else if (uiPartIdx == 2)
876 ruiPredXRight = ruiPredXLeft + iWidth;
877 ruiPredYBottom = ruiPredYTop + (iHeight << 1);
878 ruiPredYTop += iHeight;
880 else if (uiPartIdx == 3)
882 ruiPredXRight = ruiPredXLeft + (iWidth << 1);
883 ruiPredYBottom = ruiPredYTop + (iHeight << 1);
884 ruiPredXLeft += iWidth;
885 ruiPredYTop += iHeight;
891 ruiPredXRight = ruiPredXLeft + iWidth;
892 ruiPredYBottom = ruiPredYTop + iHeight;
896 ruiPredXRight = ruiPredXLeft + iWidth;
897 ruiPredYBottom = ruiPredYTop + pcCU->
getHeight(0);
898 ruiPredYTop += (iHeight / 3);
904 ruiPredXRight = ruiPredXLeft + iWidth;
905 ruiPredYBottom = ruiPredYTop + iHeight;
909 Int oriHeight = iHeight << 2;
910 ruiPredXRight = ruiPredXLeft + iWidth;
911 ruiPredYBottom = ruiPredYTop + oriHeight;
912 ruiPredYTop += (oriHeight >> 2) + (oriHeight >> 1);
918 ruiPredXRight = ruiPredXLeft + iWidth;
919 ruiPredYBottom = ruiPredYTop + iHeight;
923 ruiPredXRight = ruiPredXLeft + pcCU->
getWidth(0);
924 ruiPredYBottom = ruiPredYTop + iHeight;
925 ruiPredXLeft += (iWidth / 3);
931 ruiPredXRight = ruiPredXLeft + iWidth;
932 ruiPredYBottom = ruiPredYTop + iHeight;
936 Int oriWidth = (iWidth << 2);
937 ruiPredXRight = ruiPredXLeft + oriWidth;
938 ruiPredYBottom = ruiPredYTop + iHeight;
939 ruiPredXLeft += (oriWidth >> 2) + (oriWidth >> 1);
943 ruiPredXRight = ruiPredXLeft + iWidth;
944 ruiPredYBottom = ruiPredYTop + iHeight;
948 ruiPredXLeft += (cMv.
getHor() >> 2);
949 ruiPredYTop += (cMv.
getVer() >> 2);
950 ruiPredXRight += (cMv.
getHor() >> 2) - 1;
951 ruiPredYBottom += (cMv.
getVer() >> 2) - 1;
954 Bool checkMVPRange(
TComMv& cMv,
UInt ctuLength,
UInt tileXPosInCtus,
UInt tileYPosInCtus,
UInt tileWidthtInCtus,
UInt tileHeightInCtus,
Int PredXLeft,
Int PredXRight,
Int PredYTop,
Int PredYBottom,
ChromaFormat chromaFormat)
957 const UInt LumaLTSampleOffset = 3;
958 const UInt LumaRBSampleOffset = 4;
959 const UInt CromaLTSampleoffset = 1;
960 const UInt CromaRBSampleoffset = 2;
963 const Int leftTopPelPosX = ctuLength * tileXPosInCtus;
964 const Int leftTopPelPosY = ctuLength * tileYPosInCtus;
965 const Int rightBottomPelPosX = ((tileWidthtInCtus + tileXPosInCtus) * ctuLength) - 1;
966 const Int rightBottomPelPosY = ((tileHeightInCtus + tileYPosInCtus) * ctuLength) - 1;
969 const Bool isFullPelHorLuma = (cMv.
getHor() % 4 == 0);
970 const Bool isFullPelVerLuma = (cMv.
getVer() % 4 == 0);
972 const Int lRangeXLeft = leftTopPelPosX + (isFullPelHorLuma ? 0 : LumaLTSampleOffset);
973 const Int lRangeYTop = leftTopPelPosY + (isFullPelVerLuma ? 0 : LumaLTSampleOffset);
974 const Int lRangeXRight = rightBottomPelPosX - (isFullPelHorLuma ? 0 : LumaRBSampleOffset);
975 const Int lRangeYBottom = rightBottomPelPosY - (isFullPelVerLuma ? 0 : LumaRBSampleOffset);
977 if (!(PredXLeft >= lRangeXLeft && PredXLeft <= lRangeXRight) || !(PredXRight >= lRangeXLeft && PredXRight <= lRangeXRight))
981 else if (!(PredYTop >= lRangeYTop && PredYTop <= lRangeYBottom) || !(PredYBottom >= lRangeYTop && PredYBottom <= lRangeYBottom))
989 const Bool isFullPelHorChroma = (cMv.
getHor() % 8 == 0);
990 const Bool isFullPelVerChroma = (cMv.
getVer() % 8 == 0);
992 const Int cRangeXLeft = leftTopPelPosX + (isFullPelHorChroma ? 0 : CromaLTSampleoffset);
993 const Int cRangeYTop = leftTopPelPosY + (isFullPelVerChroma ? 0 : CromaLTSampleoffset);
994 const Int cRangeXRight = rightBottomPelPosX - (isFullPelHorChroma ? 0 : CromaRBSampleoffset);
995 const Int cRangeYBottom = rightBottomPelPosY - (isFullPelVerChroma ? 0 : CromaRBSampleoffset);
997 if (!(PredXLeft >= cRangeXLeft && PredXLeft <= cRangeXRight) || !(PredXRight >= cRangeXLeft && PredXRight <= cRangeXRight))
1001 else if ((!(PredYTop >= cRangeYTop && PredYTop <= cRangeYBottom) || !(PredYBottom >= cRangeYTop && PredYBottom <= cRangeYBottom)) && (chromaFormat !=
CHROMA_422))
1016 UInt tileXPosInCtus = 0;
1017 UInt tileYPosInCtus = 0;
1018 UInt tileWidthtInCtus = 0;
1019 UInt tileHeightInCtus = 0;
1021 getTilePosition(pcCU, tileXPosInCtus, tileYPosInCtus, tileWidthtInCtus, tileHeightInCtus);
1039 getRefPUPartPos(pcCU, cMv, partIdx, predXLeft, predYTop, predXRight, predYBottom, partWidth, partHeight);
1040 if (!
checkMVPRange(cMv, ctuLength, tileXPosInCtus, tileYPosInCtus, tileWidthtInCtus, tileHeightInCtus, predXLeft, predXRight, predYTop, predYBottom, chromaFormat))
1052 getRefPUPartPos(pcCU, cMv, partIdx, predXLeft, predYTop, predXRight, predYBottom, partWidth, partHeight);
1053 if (!
checkMVPRange(cMv, ctuLength, tileXPosInCtus, tileYPosInCtus, tileWidthtInCtus, tileHeightInCtus, predXLeft, predXRight, predYTop, predYBottom, chromaFormat))
1070 getRefPUPartPos(pcCU, cMv, partIdx, predXLeft, predYTop, predXRight, predYBottom, partWidth, partHeight);
1071 if (!
checkMVPRange(cMv, ctuLength, tileXPosInCtus, tileYPosInCtus, tileWidthtInCtus, tileHeightInCtus, predXLeft, predXRight, predYTop, predYBottom, chromaFormat))
1083 getRefPUPartPos(pcCU, cMv, partIdx, predXLeft, predYTop, predXRight, predYBottom, partWidth, partHeight);
1084 if (!
checkMVPRange(cMv, ctuLength, tileXPosInCtus, tileYPosInCtus, tileWidthtInCtus, tileHeightInCtus, predXLeft, predXRight, predYTop, predYBottom, chromaFormat))
1096 SChar g_aucConvertToBit[MAX_CU_SIZE+1]
UChar getNumPartitions(const UInt uiAbsPartIdx=0) const
static const Int MAXIMUM_INTRA_FILTERED_HEIGHT
Void setMVPNumSubParts(Int iMVPNum, RefPicList eRefPicList, UInt uiAbsPartIdx, UInt uiPartIdx, UInt uiDepth)
Void destroy()
Destroy YUV buffer.
SliceType
supported slice type
Int getMVPIdx(RefPicList eRefPicList, UInt uiIdx) const
Int getRefIdx(Int iIdx) const
SChar * getPartitionSize()
SliceType getSliceType() const
static const Int LUMA_INTERPOLATION_FILTER_SUB_SAMPLE_POSITIONS
static const Int HOR_IDX
index for intra HORIZONTAL mode
prediction class (header)
Int getStride(const ComponentID id) const
Void getMvPredAMVP(TComDataCU *pcCU, UInt uiPartIdx, UInt uiPartAddr, RefPicList eRefPicList, TComMv &rcMvPred)
static const UInt MAX_INTRA_FILTER_DEPTHS
Pel predIntraGetPredValDC(const Pel *pSrc, Int iSrcStride, UInt iWidth, UInt iHeight)
Void motionCompensation(TComDataCU *pcCU, TComYuv *pcYuvPred, RefPicList eRefPicList=REF_PIC_LIST_X, Int iPartIdx=-1)
Void xPredInterBlk(const ComponentID compID, TComDataCU *cu, TComPicYuv *refPic, UInt partAddr, TComMv *mv, Int width, Int height, TComYuv *dstPic, Bool bi, const Int bitDepth)
Generate motion-compensated block.
TComYuv m_acYuvPred[NUM_REF_PIC_LIST_01]
Void initTempBuff(ChromaFormat chromaFormatIDC)
symmetric motion partition, 2Nx N
static const UChar m_aucIntraFilter[MAX_NUM_CHANNEL_TYPE][MAX_INTRA_FILTER_DEPTHS]
UInt getStride(const ComponentID id) const
ChromaFormat getChromaFormatIdc() const
Int getNumRefIdx(RefPicList e) const
TComMv m_acMvCand[AMVP_MAX_NUM_CANDS]
array of motion vector predictor candidates
UInt getZorderIdxInCtu() const
TComPicYuv * getPicYuvRec()
UInt GetAbsPartIdxTU() const
Bool checkTMctsMvp(TComDataCU *pcCU, Int partIdx=-1)
Int iN
number of motion vector predictor candidates
Void predIntraAng(const ComponentID compID, UInt uiDirMode, Pel *piOrg, UInt uiOrgStride, Pel *piPred, UInt uiStride, TComTU &rTu, const Bool bUseFilteredPredSamples, const Bool bUseLosslessDPCM=false)
UInt getComponentScaleY(const ComponentID id) const
UInt getComponentScaleX(const ComponentID id) const
Void xWeightedAverage(TComYuv *pcYuvSrc0, TComYuv *pcYuvSrc1, Int iRefIdx0, Int iRefIdx1, UInt uiPartAddr, Int iWidth, Int iHeight, TComYuv *pcYuvDst, const BitDepths &clipBitDepths)
Void clipMv(TComMv &rcMv) const
static const Int VER_IDX
index for intra VERTICAL mode
Bool isRDPCMEnabled(UInt uiAbsPartIdx) const
asymmetric motion partition, 2Nx( N/2) + 2Nx(3N/2)
asymmetric motion partition, (3N/2)x2N + ( N/2)x2N
Void create(const UInt iWidth, const UInt iHeight, const ChromaFormat chromaFormatIDC)
Create YUV buffer.
Int m_iLumaRecStride
stride of m_pLumaRecBuffer array
T Clip3(const T minVal, const T maxVal, const T a)
general min/max clip
TComMv const & getMv(Int iIdx) const
static const Int DC_IDX
index for intra DC mode
Int getBitDepth(ChannelType type) const
Pel * getAddr(const ComponentID id)
RefPicList
reference list index
ChromaFormat
chroma formats (according to semantics of chroma_format_idc)
const TComRectangle & getRect(const ComponentID compID) const
const BitDepths & getBitDepths() const
const TComPPS * getPPS() const
ChromaFormat getChromaFormat() const
Void xPredIntraPlanar(const Pel *pSrc, Int srcStride, Pel *rpDst, Int dstStride, UInt width, UInt height)
Void getPartIndexAndSize(UInt uiPartIdx, UInt &ruiPartAddr, Int &riWidth, Int &riHeight) const
Void xDCPredFiltering(const Pel *pSrc, Int iSrcStride, Pel *pDst, Int iDstStride, Int iWidth, Int iHeight, ChannelType channelType)
const TComSPS & getSPS() const
Bool * getCUTransquantBypass()
asymmetric motion partition, ( N/2)x2N + (3N/2)x2N
Void getRefPUPartPos(TComDataCU *pcCU, TComMv &cMv, Int uiPartIdx, Int &ruiPredXLeft, Int &ruiPredYTop, Int &ruiPredXRight, Int &ruiPredYBottom, Int iWidth, Int iHeight)
ChromaFormat getChromaFormat() const
Pel * m_pLumaRecBuffer
array for downsampled reconstructed luma sample
static const Int MAX_CU_SIZE
= 1<<(MAX_CU_DEPTH)
TComInterpolationFilter m_if
static Void filterVer(Int bitDepth, Pel *src, Int srcStride, Pel *dst, Int dstStride, Int width, Int height, Bool isFirst, Bool isLast, TFilterCoeff const *coeff)
Filter a block of samples (vertical)
Pel * getAddr(const ComponentID ch)
static const Int PLANAR_IDX
TComCUMvField * getCUMvField(RefPicList e)
Pel * getPredictorPtr(const ComponentID compID, const Bool bUseFilteredPredictions)
Void addAvg(const TComYuv *pcYuvSrc0, const TComYuv *pcYuvSrc1, const UInt iPartUnitIdx, const UInt iWidth, const UInt iHeight, const BitDepths &clipBitDepths)
basic motion vector class
Bool xCheckIdenticalMotion(TComDataCU *pcCU, UInt PartAddr)
virtual ~TComPrediction()
Void xPredInterBi(TComDataCU *pcCU, UInt uiPartAddr, Int iWidth, Int iHeight, TComYuv *pcYuvPred)
TComYuv m_filteredBlockTmp[LUMA_INTERPOLATION_FILTER_SUB_SAMPLE_POSITIONS]
Bool checkMVPRange(TComMv &cMv, UInt ctuLength, UInt tileXPosInCtus, UInt tileYPosInCtus, UInt tileWidthtInCtus, UInt tileHeightInCtus, Int PredXLeft, Int PredXRight, Int PredYTop, Int PredYBottom, ChromaFormat chromaFormat)
asymmetric motion partition, 2Nx(3N/2) + 2Nx( N/2)
symmetric motion partition, Nx N
TComYuv m_filteredBlock[LUMA_INTERPOLATION_FILTER_SUB_SAMPLE_POSITIONS][LUMA_INTERPOLATION_FILTER_SUB_SAMPLE_POSITIONS]
Void setMVPIdxSubParts(Int iMVPIdx, RefPicList eRefPicList, UInt uiAbsPartIdx, UInt uiPartIdx, UInt uiDepth)
Void xWeightedPredictionBi(TComDataCU *const pcCU, const TComYuv *const pcYuvSrc0, const TComYuv *const pcYuvSrc1, const Int iRefIdx0, const Int iRefIdx1, const UInt uiPartIdx, const Int iWidth, const Int iHeight, TComYuv *pcYuvDst)
weighted prediction for bi-pred
static const Int MAXIMUM_INTRA_FILTERED_WIDTH
UInt getNumberValidComponents() const
Void getTilePosition(const TComDataCU *const pcCU, UInt &tileXPosInCtus, UInt &tileYPosInCtus, UInt &tileWidthtInCtus, UInt &tileHeightInCtus)
Void copyPartToPartYuv(TComYuv *pcYuvDst, const UInt uiPartIdx, const UInt uiWidth, const UInt uiHeight) const
#define NTAPS_LUMA
Number of taps for luma.
Void xPredInterUni(TComDataCU *pcCU, UInt uiPartAddr, Int iWidth, Int iHeight, RefPicList eRefPicList, TComYuv *pcYuvPred, Bool bi=false)
TComPic * getRefPic(RefPicList e, Int iRefIdx)
Pel * m_piYuvExt[MAX_NUM_COMPONENT][NUM_PRED_BUF]
symmetric motion partition, Nx2N
#define NTAPS_CHROMA
Number of taps for chroma.
static Void filterHor(Int bitDepth, Pel *src, Int srcStride, Pel *dst, Int dstStride, Int width, Int height, Bool isLast, TFilterCoeff const *coeff)
Filter a block of samples (horizontal)
Void xPredIntraAng(Int bitDepth, const Pel *pSrc, Int srcStride, Pel *pDst, Int dstStride, UInt width, UInt height, ChannelType channelType, UInt dirMode, const Bool bEnableEdgeFilters)
UInt getMaxCUWidth() const
const TComSPS * getSPS() const
Void xWeightedPredictionUni(TComDataCU *const pcCU, const TComYuv *const pcYuvSrc, const UInt uiPartAddr, const Int iWidth, const Int iHeight, const RefPicList eRefPicList, TComYuv *pcYuvPred, const Int iRefIdx=-1)
weighted prediction for uni-pred
static Bool UseDPCMForFirstPassIntraEstimation(TComTU &rTu, const UInt uiDirMode)