[x265] [PATCH] pass bLuma and bChroma parameters for functions
Sumalatha Polureddy
sumalatha at multicorewareinc.com
Mon Oct 21 12:38:58 CEST 2013
This patch was sent last week . Before sending this patch, it was not their
in the repo. After sending this patch only, it has been pushed to the repo
Regards
Sumalatha
On Mon, Oct 21, 2013 at 3:32 PM, Deepthi Nandakumar <
deepthi at multicorewareinc.com> wrote:
> This has already been accepted.
>
>
> On Wed, Oct 16, 2013 at 5:18 PM, <sumalatha at multicorewareinc.com> wrote:
>
>> # HG changeset patch
>> # User Sumalatha Polureddy
>> # Date 1381924099 -19800
>> # Node ID ac7aa89eae11d264992fd8495f6dcad8da85f243
>> # Parent 3cdbc62783e197cd5cf6dcf5b1cc76e2cd6d93c2
>> pass bLuma and bChroma parameters for functions
>>
>> Based on the values of two parameters, luma and chroma operations are
>> done.
>> Default value for both is set as true todo both operations
>>
>> diff -r 3cdbc62783e1 -r ac7aa89eae11
>> source/Lib/TLibCommon/TComPrediction.cpp
>> --- a/source/Lib/TLibCommon/TComPrediction.cpp Wed Oct 16 12:17:21 2013
>> +0530
>> +++ b/source/Lib/TLibCommon/TComPrediction.cpp Wed Oct 16 17:18:19 2013
>> +0530
>> @@ -245,7 +245,7 @@
>> return false;
>> }
>>
>> -void TComPrediction::motionCompensation(TComDataCU* cu, TComYuv*
>> predYuv, RefPicList picList, int partIdx)
>> +void TComPrediction::motionCompensation(TComDataCU* cu, TComYuv*
>> predYuv, RefPicList picList, int partIdx, bool bLuma, bool bChroma)
>> {
>> int width;
>> int height;
>> @@ -264,26 +264,27 @@
>>
>> MV mv = cu->getCUMvField(picList)->getMv(partAddr);
>> cu->clipMv(mv);
>> + if (bLuma)
>> + xPredInterLumaBlk(cu,
>> cu->getSlice()->getRefPic(picList, refId)->getPicYuvRec(), partAddr, &mv,
>> width, height, pcMbYuv);
>> + if (bChroma)
>> + xPredInterChromaBlk(cu,
>> cu->getSlice()->getRefPic(picList, refId)->getPicYuvRec(), partAddr, &mv,
>> width, height, pcMbYuv);
>>
>> - xPredInterLumaBlk(cu, cu->getSlice()->getRefPic(picList,
>> refId)->getPicYuvRec(), partAddr, &mv, width, height, pcMbYuv);
>> - xPredInterChromaBlk(cu,
>> cu->getSlice()->getRefPic(picList, refId)->getPicYuvRec(), partAddr, &mv,
>> width, height, pcMbYuv);
>> -
>> - xWeightedPredictionUni(cu, pcMbYuv, partAddr, width,
>> height, picList, predYuv);
>> + xWeightedPredictionUni(cu, pcMbYuv, partAddr, width,
>> height, picList, predYuv, bLuma, bChroma);
>> }
>> else
>> {
>> - xPredInterUni(cu, partAddr, width, height, picList,
>> predYuv);
>> + xPredInterUni(cu, partAddr, width, height, picList,
>> predYuv, bLuma, bChroma);
>> }
>> }
>> else
>> {
>> if (xCheckIdenticalMotion(cu, partAddr))
>> {
>> - xPredInterUni(cu, partAddr, width, height,
>> REF_PIC_LIST_0, predYuv);
>> + xPredInterUni(cu, partAddr, width, height,
>> REF_PIC_LIST_0, predYuv, bLuma, bChroma);
>> }
>> else
>> {
>> - xPredInterBi(cu, partAddr, width, height, predYuv);
>> + xPredInterBi(cu, partAddr, width, height, predYuv,
>> bLuma, bChroma);
>> }
>> }
>> return;
>> @@ -305,31 +306,33 @@
>> MV mv = cu->getCUMvField(picList)->getMv(partAddr);
>> cu->clipMv(mv);
>>
>> - xPredInterLumaBlk(cu, cu->getSlice()->getRefPic(picList,
>> refId)->getPicYuvRec(), partAddr, &mv, width, height, pcMbYuv);
>> - xPredInterChromaBlk(cu,
>> cu->getSlice()->getRefPic(picList, refId)->getPicYuvRec(), partAddr, &mv,
>> width, height, pcMbYuv);
>> + if (bLuma)
>> + xPredInterLumaBlk(cu,
>> cu->getSlice()->getRefPic(picList, refId)->getPicYuvRec(), partAddr, &mv,
>> width, height, pcMbYuv);
>> + if (bChroma)
>> + xPredInterChromaBlk(cu,
>> cu->getSlice()->getRefPic(picList, refId)->getPicYuvRec(), partAddr, &mv,
>> width, height, pcMbYuv);
>>
>> - xWeightedPredictionUni(cu, pcMbYuv, partAddr, width,
>> height, picList, predYuv);
>> + xWeightedPredictionUni(cu, pcMbYuv, partAddr, width,
>> height, picList, predYuv, bLuma, bChroma);
>> }
>> else
>> {
>> - xPredInterUni(cu, partAddr, width, height, picList,
>> predYuv);
>> + xPredInterUni(cu, partAddr, width, height, picList,
>> predYuv, bLuma, bChroma);
>> }
>> }
>> else
>> {
>> if (xCheckIdenticalMotion(cu, partAddr))
>> {
>> - xPredInterUni(cu, partAddr, width, height,
>> REF_PIC_LIST_0, predYuv);
>> + xPredInterUni(cu, partAddr, width, height,
>> REF_PIC_LIST_0, predYuv, bLuma, bChroma);
>> }
>> else
>> {
>> - xPredInterBi(cu, partAddr, width, height, predYuv);
>> + xPredInterBi(cu, partAddr, width, height, predYuv,
>> bLuma, bChroma);
>> }
>> }
>> }
>> }
>>
>> -void TComPrediction::xPredInterUni(TComDataCU* cu, UInt partAddr, int
>> width, int height, RefPicList picList, TComYuv* outPredYuv)
>> +void TComPrediction::xPredInterUni(TComDataCU* cu, UInt partAddr, int
>> width, int height, RefPicList picList, TComYuv* outPredYuv, bool bLuma,
>> bool bChroma)
>> {
>> int refIdx = cu->getCUMvField(picList)->getRefIdx(partAddr);
>>
>> @@ -338,12 +341,14 @@
>> MV mv = cu->getCUMvField(picList)->getMv(partAddr);
>> cu->clipMv(mv);
>>
>> - xPredInterLumaBlk(cu, cu->getSlice()->m_mref[picList][refIdx],
>> partAddr, &mv, width, height, outPredYuv);
>> + if (bLuma)
>> + xPredInterLumaBlk(cu, cu->getSlice()->m_mref[picList][refIdx],
>> partAddr, &mv, width, height, outPredYuv);
>>
>> - xPredInterChromaBlk(cu, cu->getSlice()->getRefPic(picList,
>> refIdx)->getPicYuvRec(), partAddr, &mv, width, height, outPredYuv);
>> + if (bChroma)
>> + xPredInterChromaBlk(cu, cu->getSlice()->getRefPic(picList,
>> refIdx)->getPicYuvRec(), partAddr, &mv, width, height, outPredYuv);
>> }
>>
>> -void TComPrediction::xPredInterUni(TComDataCU* cu, UInt partAddr, int
>> width, int height, RefPicList picList, TShortYUV* outPredYuv)
>> +void TComPrediction::xPredInterUni(TComDataCU* cu, UInt partAddr, int
>> width, int height, RefPicList picList, TShortYUV* outPredYuv, bool bLuma,
>> bool bChroma)
>> {
>> int refIdx = cu->getCUMvField(picList)->getRefIdx(partAddr);
>>
>> @@ -352,11 +357,13 @@
>> MV mv = cu->getCUMvField(picList)->getMv(partAddr);
>> cu->clipMv(mv);
>>
>> - xPredInterLumaBlk(cu, cu->getSlice()->getRefPic(picList,
>> refIdx)->getPicYuvRec(), partAddr, &mv, width, height, outPredYuv);
>> - xPredInterChromaBlk(cu, cu->getSlice()->getRefPic(picList,
>> refIdx)->getPicYuvRec(), partAddr, &mv, width, height, outPredYuv);
>> + if (bLuma)
>> + xPredInterLumaBlk(cu, cu->getSlice()->getRefPic(picList,
>> refIdx)->getPicYuvRec(), partAddr, &mv, width, height, outPredYuv);
>> + if (bChroma)
>> + xPredInterChromaBlk(cu, cu->getSlice()->getRefPic(picList,
>> refIdx)->getPicYuvRec(), partAddr, &mv, width, height, outPredYuv);
>> }
>>
>> -void TComPrediction::xPredInterBi(TComDataCU* cu, UInt partAddr, int
>> width, int height, TComYuv*& outPredYuv)
>> +void TComPrediction::xPredInterBi(TComDataCU* cu, UInt partAddr, int
>> width, int height, TComYuv*& outPredYuv, bool bLuma, bool bChroma)
>> {
>> int refIdx[2] = { -1, -1 };
>>
>> @@ -371,16 +378,16 @@
>> assert(refIdx[refList] <
>> cu->getSlice()->getNumRefIdx(picList));
>>
>> pcMbYuv = &m_predShortYuv[refList];
>> - xPredInterUni(cu, partAddr, width, height, picList, pcMbYuv);
>> + xPredInterUni(cu, partAddr, width, height, picList, pcMbYuv,
>> bLuma, bChroma);
>> }
>>
>> if (cu->getSlice()->getPPS()->getWPBiPred() &&
>> cu->getSlice()->getSliceType() == B_SLICE)
>> {
>> - xWeightedPredictionBi(cu, &m_predShortYuv[0],
>> &m_predShortYuv[1], refIdx[0], refIdx[1], partAddr, width, height,
>> outPredYuv);
>> + xWeightedPredictionBi(cu, &m_predShortYuv[0],
>> &m_predShortYuv[1], refIdx[0], refIdx[1], partAddr, width, height,
>> outPredYuv, bLuma, bChroma);
>> }
>> else
>> {
>> - outPredYuv->addAvg(&m_predShortYuv[0], &m_predShortYuv[1],
>> partAddr, width, height);
>> + outPredYuv->addAvg(&m_predShortYuv[0], &m_predShortYuv[1],
>> partAddr, width, height, bLuma, bChroma);
>> }
>> }
>> else if (cu->getSlice()->getPPS()->getWPBiPred() &&
>> cu->getSlice()->getSliceType() == B_SLICE)
>> @@ -399,10 +406,10 @@
>> assert(refIdx[refList] <
>> cu->getSlice()->getNumRefIdx(picList));
>>
>> pcMbYuv = &m_predShortYuv[refList];
>> - xPredInterUni(cu, partAddr, width, height, picList, pcMbYuv);
>> + xPredInterUni(cu, partAddr, width, height, picList, pcMbYuv,
>> bLuma, bChroma);
>> }
>>
>> - xWeightedPredictionBi(cu, &m_predShortYuv[0],
>> &m_predShortYuv[1], refIdx[0], refIdx[1], partAddr, width, height,
>> outPredYuv);
>> + xWeightedPredictionBi(cu, &m_predShortYuv[0],
>> &m_predShortYuv[1], refIdx[0], refIdx[1], partAddr, width, height,
>> outPredYuv, bLuma, bChroma);
>> }
>> else if (cu->getSlice()->getPPS()->getUseWP() &&
>> cu->getSlice()->getSliceType() == P_SLICE)
>> {
>> @@ -421,11 +428,12 @@
>>
>> MV mv = cu->getCUMvField(picList)->getMv(partAddr);
>> cu->clipMv(mv);
>> + if (bLuma)
>> + xPredInterLumaBlk(cu, cu->getSlice()->getRefPic(picList,
>> refId)->getPicYuvRec(), partAddr, &mv, width, height, pcMbYuv);
>> + if (bChroma)
>> + xPredInterChromaBlk(cu,
>> cu->getSlice()->getRefPic(picList, refId)->getPicYuvRec(), partAddr, &mv,
>> width, height, pcMbYuv);
>>
>> - xPredInterLumaBlk(cu, cu->getSlice()->getRefPic(picList,
>> refId)->getPicYuvRec(), partAddr, &mv, width, height, pcMbYuv);
>> - xPredInterChromaBlk(cu, cu->getSlice()->getRefPic(picList,
>> refId)->getPicYuvRec(), partAddr, &mv, width, height, pcMbYuv);
>> -
>> - xWeightedPredictionUni(cu, &m_predShortYuv[0], partAddr,
>> width, height, REF_PIC_LIST_0, outPredYuv);
>> + xWeightedPredictionUni(cu, &m_predShortYuv[0], partAddr,
>> width, height, REF_PIC_LIST_0, outPredYuv, bLuma, bChroma);
>> }
>> }
>> else
>> @@ -443,10 +451,10 @@
>> assert(refIdx[refList] <
>> cu->getSlice()->getNumRefIdx(picList));
>>
>> TComYuv* yuv = &m_predYuv[refList];
>> - xPredInterUni(cu, partAddr, width, height, picList, yuv);
>> + xPredInterUni(cu, partAddr, width, height, picList, yuv,
>> bLuma, bChroma);
>> }
>>
>> - xWeightedAverage(&m_predYuv[0], &m_predYuv[1], refIdx[0],
>> refIdx[1], partAddr, width, height, outPredYuv);
>> + xWeightedAverage(&m_predYuv[0], &m_predYuv[1], refIdx[0],
>> refIdx[1], partAddr, width, height, outPredYuv, bLuma, bChroma);
>> }
>> }
>>
>> @@ -635,19 +643,19 @@
>> }
>> }
>>
>> -void TComPrediction::xWeightedAverage(TComYuv* srcYuv0, TComYuv*
>> srcYuv1, int refIdx0, int refIdx1, UInt partIdx, int width, int height,
>> TComYuv*& outDstYuv)
>> +void TComPrediction::xWeightedAverage(TComYuv* srcYuv0, TComYuv*
>> srcYuv1, int refIdx0, int refIdx1, UInt partIdx, int width, int height,
>> TComYuv*& outDstYuv, bool bLuma, bool bChroma)
>> {
>> if (refIdx0 >= 0 && refIdx1 >= 0)
>> {
>> - outDstYuv->addAvg(srcYuv0, srcYuv1, partIdx, width, height);
>> + outDstYuv->addAvg(srcYuv0, srcYuv1, partIdx, width, height,
>> bLuma, bChroma);
>> }
>> else if (refIdx0 >= 0 && refIdx1 < 0)
>> {
>> - srcYuv0->copyPartToPartYuv(outDstYuv, partIdx, width, height);
>> + srcYuv0->copyPartToPartYuv(outDstYuv, partIdx, width, height,
>> bLuma, bChroma);
>> }
>> else if (refIdx0 < 0 && refIdx1 >= 0)
>> {
>> - srcYuv1->copyPartToPartYuv(outDstYuv, partIdx, width, height);
>> + srcYuv1->copyPartToPartYuv(outDstYuv, partIdx, width, height,
>> bLuma, bChroma);
>> }
>> }
>>
>> diff -r 3cdbc62783e1 -r ac7aa89eae11
>> source/Lib/TLibCommon/TComPrediction.h
>> --- a/source/Lib/TLibCommon/TComPrediction.h Wed Oct 16 12:17:21 2013
>> +0530
>> +++ b/source/Lib/TLibCommon/TComPrediction.h Wed Oct 16 17:18:19 2013
>> +0530
>> @@ -83,15 +83,15 @@
>> int m_lumaRecStride; ///< stride of m_lumaRecBuffer
>>
>> // motion compensation functions
>> - void xPredInterUni(TComDataCU* cu, UInt partAddr, int width, int
>> height, RefPicList picList, TComYuv* outPredYuv);
>> - void xPredInterUni(TComDataCU* cu, UInt partAddr, int width, int
>> height, RefPicList picList, TShortYUV* outPredYuv);
>> + void xPredInterUni(TComDataCU* cu, UInt partAddr, int width, int
>> height, RefPicList picList, TComYuv* outPredYuv, bool bLuma = true, bool
>> bChroma = true);
>> + void xPredInterUni(TComDataCU* cu, UInt partAddr, int width, int
>> height, RefPicList picList, TShortYUV* outPredYuv, bool bLuma = true, bool
>> bChroma = true);
>> void xPredInterLumaBlk(TComDataCU *cu, MotionReference *refPic, UInt
>> partAddr, MV *mv, int width, int height, TComYuv *dstPic);
>> void xPredInterLumaBlk(TComDataCU *cu, TComPicYuv *refPic, UInt
>> partAddr, MV *mv, int width, int height, TShortYUV *dstPic);
>> void xPredInterChromaBlk(TComDataCU *cu, TComPicYuv *refPic, UInt
>> partAddr, MV *mv, int width, int height, TComYuv *dstPic);
>> void xPredInterChromaBlk(TComDataCU *cu, TComPicYuv *refPic, UInt
>> partAddr, MV *mv, int width, int height, TShortYUV *dstPic);
>>
>> - void xPredInterBi(TComDataCU* cu, UInt partAddr, int width, int
>> height, TComYuv*& outPredYuv);
>> - void xWeightedAverage(TComYuv* srcYuv0, TComYuv* srcYuv1, int
>> refIdx0, int refIdx1, UInt partAddr, int width, int height, TComYuv*&
>> outDstYuv);
>> + void xPredInterBi(TComDataCU* cu, UInt partAddr, int width, int
>> height, TComYuv*& outPredYuv, bool bLuma = true, bool bChroma = true);
>> + void xWeightedAverage(TComYuv* srcYuv0, TComYuv* srcYuv1, int
>> refIdx0, int refIdx1, UInt partAddr, int width, int height, TComYuv*&
>> outDstYuv, bool bLuma = true, bool bChroma = true);
>>
>> void xGetLLSPrediction(TComPattern* pcPattern, int* src0, int
>> srcstride, Pel* dst0, int dststride, UInt width, UInt height, UInt ext0);
>>
>> @@ -107,7 +107,7 @@
>> void initTempBuff();
>>
>> // inter
>> - void motionCompensation(TComDataCU* cu, TComYuv* predYuv, RefPicList
>> picList = REF_PIC_LIST_X, int partIdx = -1);
>> + void motionCompensation(TComDataCU* cu, TComYuv* predYuv, RefPicList
>> picList = REF_PIC_LIST_X, int partIdx = -1, bool bLuma = true, bool bChroma
>> = true);
>>
>> // motion vector prediction
>> void getMvPredAMVP(TComDataCU* cu, UInt partIdx, UInt partAddr,
>> RefPicList picList, MV& mvPred);
>> diff -r 3cdbc62783e1 -r ac7aa89eae11
>> source/Lib/TLibCommon/TComWeightPrediction.cpp
>> --- a/source/Lib/TLibCommon/TComWeightPrediction.cpp Wed Oct 16
>> 12:17:21 2013 +0530
>> +++ b/source/Lib/TLibCommon/TComWeightPrediction.cpp Wed Oct 16
>> 17:18:19 2013 +0530
>> @@ -80,7 +80,7 @@
>> * \param TComYuv* outDstYuv
>> * \returns void
>> */
>> -void TComWeightPrediction::addWeightBi(TComYuv* srcYuv0, TComYuv*
>> srcYuv1, UInt partUnitIdx, UInt width, UInt height, wpScalingParam *wp0,
>> wpScalingParam *wp1, TComYuv* outDstYuv, bool bRound)
>> +void TComWeightPrediction::addWeightBi(TComYuv* srcYuv0, TComYuv*
>> srcYuv1, UInt partUnitIdx, UInt width, UInt height, wpScalingParam *wp0,
>> wpScalingParam *wp1, TComYuv* outDstYuv, bool bRound, bool bLuma, bool
>> bChroma)
>> {
>> int x, y;
>>
>> @@ -96,90 +96,96 @@
>> Pel* dstU = outDstYuv->getCbAddr(partUnitIdx);
>> Pel* dstV = outDstYuv->getCrAddr(partUnitIdx);
>>
>> - // Luma : --------------------------------------------
>> - int w0 = wp0[0].w;
>> - int offset = wp0[0].offset;
>> - int shiftNum = IF_INTERNAL_PREC - X265_DEPTH;
>> - int shift = wp0[0].shift + shiftNum;
>> - int round = shift ? (1 << (shift - 1)) * bRound : 0;
>> - int w1 = wp1[0].w;
>> + if (bLuma)
>> + {
>> + // Luma : --------------------------------------------
>> + int w0 = wp0[0].w;
>> + int offset = wp0[0].offset;
>> + int shiftNum = IF_INTERNAL_PREC - X265_DEPTH;
>> + int shift = wp0[0].shift + shiftNum;
>> + int round = shift ? (1 << (shift - 1)) * bRound : 0;
>> + int w1 = wp1[0].w;
>>
>> - UInt src0Stride = srcYuv0->getStride();
>> - UInt src1Stride = srcYuv1->getStride();
>> - UInt dststride = outDstYuv->getStride();
>> + UInt src0Stride = srcYuv0->getStride();
>> + UInt src1Stride = srcYuv1->getStride();
>> + UInt dststride = outDstYuv->getStride();
>>
>> - for (y = height - 1; y >= 0; y--)
>> + for (y = height - 1; y >= 0; y--)
>> + {
>> + for (x = width - 1; x >= 0; )
>> + {
>> + // note: luma min width is 4
>> + pDstY[x] = weightBidirY(w0, srcY0[x], w1, srcY1[x],
>> round, shift, offset);
>> + x--;
>> + pDstY[x] = weightBidirY(w0, srcY0[x], w1, srcY1[x],
>> round, shift, offset);
>> + x--;
>> + pDstY[x] = weightBidirY(w0, srcY0[x], w1, srcY1[x],
>> round, shift, offset);
>> + x--;
>> + pDstY[x] = weightBidirY(w0, srcY0[x], w1, srcY1[x],
>> round, shift, offset);
>> + x--;
>> + }
>> +
>> + srcY0 += src0Stride;
>> + srcY1 += src1Stride;
>> + pDstY += dststride;
>> + }
>> + }
>> +
>> + if (bChroma)
>> {
>> - for (x = width - 1; x >= 0; )
>> + // Chroma U : --------------------------------------------
>> + int w0 = wp0[1].w;
>> + int offset = wp0[1].offset;
>> + int shiftNum = IF_INTERNAL_PREC - X265_DEPTH;
>> + int shift = wp0[1].shift + shiftNum;
>> + int round = shift ? (1 << (shift - 1)) : 0;
>> + int w1 = wp1[1].w;
>> +
>> + UInt src0Stride = srcYuv0->getCStride();
>> + UInt src1Stride = srcYuv1->getCStride();
>> + UInt dststride = outDstYuv->getCStride();
>> +
>> + width >>= 1;
>> + height >>= 1;
>> +
>> + for (y = height - 1; y >= 0; y--)
>> {
>> - // note: luma min width is 4
>> - pDstY[x] = weightBidirY(w0, srcY0[x], w1, srcY1[x], round,
>> shift, offset);
>> - x--;
>> - pDstY[x] = weightBidirY(w0, srcY0[x], w1, srcY1[x], round,
>> shift, offset);
>> - x--;
>> - pDstY[x] = weightBidirY(w0, srcY0[x], w1, srcY1[x], round,
>> shift, offset);
>> - x--;
>> - pDstY[x] = weightBidirY(w0, srcY0[x], w1, srcY1[x], round,
>> shift, offset);
>> - x--;
>> + for (x = width - 1; x >= 0; )
>> + {
>> + // note: chroma min width is 2
>> + dstU[x] = weightBidirC(w0, srcU0[x], w1, srcU1[x],
>> round, shift, offset);
>> + x--;
>> + dstU[x] = weightBidirC(w0, srcU0[x], w1, srcU1[x],
>> round, shift, offset);
>> + x--;
>> + }
>> +
>> + srcU0 += src0Stride;
>> + srcU1 += src1Stride;
>> + dstU += dststride;
>> }
>>
>> - srcY0 += src0Stride;
>> - srcY1 += src1Stride;
>> - pDstY += dststride;
>> - }
>> + // Chroma V : --------------------------------------------
>> + w0 = wp0[2].w;
>> + offset = wp0[2].offset;
>> + shift = wp0[2].shift + shiftNum;
>> + round = shift ? (1 << (shift - 1)) : 0;
>> + w1 = wp1[2].w;
>>
>> - // Chroma U : --------------------------------------------
>> - w0 = wp0[1].w;
>> - offset = wp0[1].offset;
>> - shiftNum = IF_INTERNAL_PREC - X265_DEPTH;
>> - shift = wp0[1].shift + shiftNum;
>> - round = shift ? (1 << (shift - 1)) : 0;
>> - w1 = wp1[1].w;
>> + for (y = height - 1; y >= 0; y--)
>> + {
>> + for (x = width - 1; x >= 0; )
>> + {
>> + // note: chroma min width is 2
>> + dstV[x] = weightBidirC(w0, srcV0[x], w1, srcV1[x],
>> round, shift, offset);
>> + x--;
>> + dstV[x] = weightBidirC(w0, srcV0[x], w1, srcV1[x],
>> round, shift, offset);
>> + x--;
>> + }
>>
>> - src0Stride = srcYuv0->getCStride();
>> - src1Stride = srcYuv1->getCStride();
>> - dststride = outDstYuv->getCStride();
>> -
>> - width >>= 1;
>> - height >>= 1;
>> -
>> - for (y = height - 1; y >= 0; y--)
>> - {
>> - for (x = width - 1; x >= 0; )
>> - {
>> - // note: chroma min width is 2
>> - dstU[x] = weightBidirC(w0, srcU0[x], w1, srcU1[x], round,
>> shift, offset);
>> - x--;
>> - dstU[x] = weightBidirC(w0, srcU0[x], w1, srcU1[x], round,
>> shift, offset);
>> - x--;
>> + srcV0 += src0Stride;
>> + srcV1 += src1Stride;
>> + dstV += dststride;
>> }
>> -
>> - srcU0 += src0Stride;
>> - srcU1 += src1Stride;
>> - dstU += dststride;
>> - }
>> -
>> - // Chroma V : --------------------------------------------
>> - w0 = wp0[2].w;
>> - offset = wp0[2].offset;
>> - shift = wp0[2].shift + shiftNum;
>> - round = shift ? (1 << (shift - 1)) : 0;
>> - w1 = wp1[2].w;
>> -
>> - for (y = height - 1; y >= 0; y--)
>> - {
>> - for (x = width - 1; x >= 0; )
>> - {
>> - // note: chroma min width is 2
>> - dstV[x] = weightBidirC(w0, srcV0[x], w1, srcV1[x], round,
>> shift, offset);
>> - x--;
>> - dstV[x] = weightBidirC(w0, srcV0[x], w1, srcV1[x], round,
>> shift, offset);
>> - x--;
>> - }
>> -
>> - srcV0 += src0Stride;
>> - srcV1 += src1Stride;
>> - dstV += dststride;
>> }
>> }
>>
>> @@ -194,10 +200,13 @@
>> * \param TComYuv* outDstYuv
>> * \returns void
>> */
>> -void TComWeightPrediction::addWeightBi(TShortYUV* srcYuv0, TShortYUV*
>> srcYuv1, UInt partUnitIdx, UInt width, UInt height, wpScalingParam *wp0,
>> wpScalingParam *wp1, TComYuv* outDstYuv, bool bRound)
>> +void TComWeightPrediction::addWeightBi(TShortYUV* srcYuv0, TShortYUV*
>> srcYuv1, UInt partUnitIdx, UInt width, UInt height, wpScalingParam *wp0,
>> wpScalingParam *wp1, TComYuv* outDstYuv, bool bRound, bool bLuma, bool
>> bChroma)
>> {
>> int x, y;
>>
>> + int w0,w1, offset, shiftNum, shift, round;
>> + UInt src0Stride, src1Stride, dststride;
>> +
>> short* srcY0 = srcYuv0->getLumaAddr(partUnitIdx);
>> short* srcU0 = srcYuv0->getCbAddr(partUnitIdx);
>> short* srcV0 = srcYuv0->getCrAddr(partUnitIdx);
>> @@ -210,90 +219,96 @@
>> Pel* dstU = outDstYuv->getCbAddr(partUnitIdx);
>> Pel* dstV = outDstYuv->getCrAddr(partUnitIdx);
>>
>> - // Luma : --------------------------------------------
>> - int w0 = wp0[0].w;
>> - int offset = wp0[0].offset;
>> - int shiftNum = IF_INTERNAL_PREC - X265_DEPTH;
>> - int shift = wp0[0].shift + shiftNum;
>> - int round = shift ? (1 << (shift - 1)) * bRound : 0;
>> - int w1 = wp1[0].w;
>> + if (bLuma)
>> + {
>> + // Luma : --------------------------------------------
>> + w0 = wp0[0].w;
>> + offset = wp0[0].offset;
>> + shiftNum = IF_INTERNAL_PREC - X265_DEPTH;
>> + shift = wp0[0].shift + shiftNum;
>> + round = shift ? (1 << (shift - 1)) * bRound : 0;
>> + w1 = wp1[0].w;
>>
>> - UInt src0Stride = srcYuv0->m_width;
>> - UInt src1Stride = srcYuv1->m_width;
>> - UInt dststride = outDstYuv->getStride();
>> + src0Stride = srcYuv0->m_width;
>> + src1Stride = srcYuv1->m_width;
>> + dststride = outDstYuv->getStride();
>>
>> - for (y = height - 1; y >= 0; y--)
>> + for (y = height - 1; y >= 0; y--)
>> + {
>> + for (x = width - 1; x >= 0; )
>> + {
>> + // note: luma min width is 4
>> + dstY[x] = weightBidirY(w0, srcY0[x], w1, srcY1[x],
>> round, shift, offset);
>> + x--;
>> + dstY[x] = weightBidirY(w0, srcY0[x], w1, srcY1[x],
>> round, shift, offset);
>> + x--;
>> + dstY[x] = weightBidirY(w0, srcY0[x], w1, srcY1[x],
>> round, shift, offset);
>> + x--;
>> + dstY[x] = weightBidirY(w0, srcY0[x], w1, srcY1[x],
>> round, shift, offset);
>> + x--;
>> + }
>> +
>> + srcY0 += src0Stride;
>> + srcY1 += src1Stride;
>> + dstY += dststride;
>> + }
>> + }
>> +
>> + if (bChroma)
>> {
>> - for (x = width - 1; x >= 0; )
>> + // Chroma U : --------------------------------------------
>> + w0 = wp0[1].w;
>> + offset = wp0[1].offset;
>> + shiftNum = IF_INTERNAL_PREC - X265_DEPTH;
>> + shift = wp0[1].shift + shiftNum;
>> + round = shift ? (1 << (shift - 1)) : 0;
>> + w1 = wp1[1].w;
>> +
>> + src0Stride = srcYuv0->m_cwidth;
>> + src1Stride = srcYuv1->m_cwidth;
>> + dststride = outDstYuv->getCStride();
>> +
>> + width >>= 1;
>> + height >>= 1;
>> +
>> + for (y = height - 1; y >= 0; y--)
>> {
>> - // note: luma min width is 4
>> - dstY[x] = weightBidirY(w0, srcY0[x], w1, srcY1[x], round,
>> shift, offset);
>> - x--;
>> - dstY[x] = weightBidirY(w0, srcY0[x], w1, srcY1[x], round,
>> shift, offset);
>> - x--;
>> - dstY[x] = weightBidirY(w0, srcY0[x], w1, srcY1[x], round,
>> shift, offset);
>> - x--;
>> - dstY[x] = weightBidirY(w0, srcY0[x], w1, srcY1[x], round,
>> shift, offset);
>> - x--;
>> + for (x = width - 1; x >= 0; )
>> + {
>> + // note: chroma min width is 2
>> + dstU[x] = weightBidirC(w0, srcU0[x], w1, srcU1[x],
>> round, shift, offset);
>> + x--;
>> + dstU[x] = weightBidirC(w0, srcU0[x], w1, srcU1[x],
>> round, shift, offset);
>> + x--;
>> + }
>> +
>> + srcU0 += src0Stride;
>> + srcU1 += src1Stride;
>> + dstU += dststride;
>> }
>>
>> - srcY0 += src0Stride;
>> - srcY1 += src1Stride;
>> - dstY += dststride;
>> - }
>> + // Chroma V : --------------------------------------------
>> + w0 = wp0[2].w;
>> + offset = wp0[2].offset;
>> + shift = wp0[2].shift + shiftNum;
>> + round = shift ? (1 << (shift - 1)) : 0;
>> + w1 = wp1[2].w;
>>
>> - // Chroma U : --------------------------------------------
>> - w0 = wp0[1].w;
>> - offset = wp0[1].offset;
>> - shiftNum = IF_INTERNAL_PREC - X265_DEPTH;
>> - shift = wp0[1].shift + shiftNum;
>> - round = shift ? (1 << (shift - 1)) : 0;
>> - w1 = wp1[1].w;
>> + for (y = height - 1; y >= 0; y--)
>> + {
>> + for (x = width - 1; x >= 0; )
>> + {
>> + // note: chroma min width is 2
>> + dstV[x] = weightBidirC(w0, srcV0[x], w1, srcV1[x],
>> round, shift, offset);
>> + x--;
>> + dstV[x] = weightBidirC(w0, srcV0[x], w1, srcV1[x],
>> round, shift, offset);
>> + x--;
>> + }
>>
>> - src0Stride = srcYuv0->m_cwidth;
>> - src1Stride = srcYuv1->m_cwidth;
>> - dststride = outDstYuv->getCStride();
>> -
>> - width >>= 1;
>> - height >>= 1;
>> -
>> - for (y = height - 1; y >= 0; y--)
>> - {
>> - for (x = width - 1; x >= 0; )
>> - {
>> - // note: chroma min width is 2
>> - dstU[x] = weightBidirC(w0, srcU0[x], w1, srcU1[x], round,
>> shift, offset);
>> - x--;
>> - dstU[x] = weightBidirC(w0, srcU0[x], w1, srcU1[x], round,
>> shift, offset);
>> - x--;
>> + srcV0 += src0Stride;
>> + srcV1 += src1Stride;
>> + dstV += dststride;
>> }
>> -
>> - srcU0 += src0Stride;
>> - srcU1 += src1Stride;
>> - dstU += dststride;
>> - }
>> -
>> - // Chroma V : --------------------------------------------
>> - w0 = wp0[2].w;
>> - offset = wp0[2].offset;
>> - shift = wp0[2].shift + shiftNum;
>> - round = shift ? (1 << (shift - 1)) : 0;
>> - w1 = wp1[2].w;
>> -
>> - for (y = height - 1; y >= 0; y--)
>> - {
>> - for (x = width - 1; x >= 0; )
>> - {
>> - // note: chroma min width is 2
>> - dstV[x] = weightBidirC(w0, srcV0[x], w1, srcV1[x], round,
>> shift, offset);
>> - x--;
>> - dstV[x] = weightBidirC(w0, srcV0[x], w1, srcV1[x], round,
>> shift, offset);
>> - x--;
>> - }
>> -
>> - srcV0 += src0Stride;
>> - srcV1 += src1Stride;
>> - dstV += dststride;
>> }
>> }
>>
>> @@ -306,10 +321,13 @@
>> * \param TComYuv* outDstYuv
>> * \returns void
>> */
>> -void TComWeightPrediction::addWeightUni(TComYuv* srcYuv0, UInt
>> partUnitIdx, UInt width, UInt height, wpScalingParam *wp0, TComYuv*
>> outDstYuv)
>> +void TComWeightPrediction::addWeightUni(TComYuv* srcYuv0, UInt
>> partUnitIdx, UInt width, UInt height, wpScalingParam *wp0, TComYuv*
>> outDstYuv, bool bLuma, bool bChroma)
>> {
>> int x, y;
>>
>> + int w0, offset, shiftNum, shift, round;
>> + UInt src0Stride, dststride;
>> +
>> Pel* srcY0 = srcYuv0->getLumaAddr(partUnitIdx);
>> Pel* srcU0 = srcYuv0->getCbAddr(partUnitIdx);
>> Pel* srcV0 = srcYuv0->getCrAddr(partUnitIdx);
>> @@ -318,81 +336,87 @@
>> Pel* dstU = outDstYuv->getCbAddr(partUnitIdx);
>> Pel* dstV = outDstYuv->getCrAddr(partUnitIdx);
>>
>> - // Luma : --------------------------------------------
>> - int w0 = wp0[0].w;
>> - int offset = wp0[0].offset;
>> - int shiftNum = IF_INTERNAL_PREC - X265_DEPTH;
>> - int shift = wp0[0].shift + shiftNum;
>> - int round = shift ? (1 << (shift - 1)) : 0;
>> - UInt src0Stride = srcYuv0->getStride();
>> - UInt dststride = outDstYuv->getStride();
>> + if (bLuma)
>> + {
>> + // Luma : --------------------------------------------
>> + w0 = wp0[0].w;
>> + offset = wp0[0].offset;
>> + shiftNum = IF_INTERNAL_PREC - X265_DEPTH;
>> + shift = wp0[0].shift + shiftNum;
>> + round = shift ? (1 << (shift - 1)) : 0;
>> + src0Stride = srcYuv0->getStride();
>> + dststride = outDstYuv->getStride();
>>
>> - for (y = height - 1; y >= 0; y--)
>> + for (y = height - 1; y >= 0; y--)
>> + {
>> + for (x = width - 1; x >= 0; )
>> + {
>> + // note: luma min width is 4
>> + dstY[x] = weightUnidirY(w0, srcY0[x], round, shift,
>> offset);
>> + x--;
>> + dstY[x] = weightUnidirY(w0, srcY0[x], round, shift,
>> offset);
>> + x--;
>> + dstY[x] = weightUnidirY(w0, srcY0[x], round, shift,
>> offset);
>> + x--;
>> + dstY[x] = weightUnidirY(w0, srcY0[x], round, shift,
>> offset);
>> + x--;
>> + }
>> +
>> + srcY0 += src0Stride;
>> + dstY += dststride;
>> + }
>> + }
>> +
>> + if (bChroma)
>> {
>> - for (x = width - 1; x >= 0; )
>> + // Chroma U : --------------------------------------------
>> + w0 = wp0[1].w;
>> + offset = wp0[1].offset;
>> + shiftNum = IF_INTERNAL_PREC - X265_DEPTH;
>> + shift = wp0[1].shift + shiftNum;
>> + round = shift ? (1 << (shift - 1)) : 0;
>> +
>> + src0Stride = srcYuv0->getCStride();
>> + dststride = outDstYuv->getCStride();
>> +
>> + width >>= 1;
>> + height >>= 1;
>> +
>> + for (y = height - 1; y >= 0; y--)
>> {
>> - // note: luma min width is 4
>> - dstY[x] = weightUnidirY(w0, srcY0[x], round, shift, offset);
>> - x--;
>> - dstY[x] = weightUnidirY(w0, srcY0[x], round, shift, offset);
>> - x--;
>> - dstY[x] = weightUnidirY(w0, srcY0[x], round, shift, offset);
>> - x--;
>> - dstY[x] = weightUnidirY(w0, srcY0[x], round, shift, offset);
>> - x--;
>> + for (x = width - 1; x >= 0; )
>> + {
>> + // note: chroma min width is 2
>> + dstU[x] = weightUnidirC(w0, srcU0[x], round, shift,
>> offset);
>> + x--;
>> + dstU[x] = weightUnidirC(w0, srcU0[x], round, shift,
>> offset);
>> + x--;
>> + }
>> +
>> + srcU0 += src0Stride;
>> + dstU += dststride;
>> }
>>
>> - srcY0 += src0Stride;
>> - dstY += dststride;
>> - }
>> + // Chroma V : --------------------------------------------
>> + w0 = wp0[2].w;
>> + offset = wp0[2].offset;
>> + shift = wp0[2].shift + shiftNum;
>> + round = shift ? (1 << (shift - 1)) : 0;
>>
>> - // Chroma U : --------------------------------------------
>> - w0 = wp0[1].w;
>> - offset = wp0[1].offset;
>> - shiftNum = IF_INTERNAL_PREC - X265_DEPTH;
>> - shift = wp0[1].shift + shiftNum;
>> - round = shift ? (1 << (shift - 1)) : 0;
>> + for (y = height - 1; y >= 0; y--)
>> + {
>> + for (x = width - 1; x >= 0; )
>> + {
>> + // note: chroma min width is 2
>> + dstV[x] = weightUnidirC(w0, srcV0[x], round, shift,
>> offset);
>> + x--;
>> + dstV[x] = weightUnidirC(w0, srcV0[x], round, shift,
>> offset);
>> + x--;
>> + }
>>
>> - src0Stride = srcYuv0->getCStride();
>> - dststride = outDstYuv->getCStride();
>> -
>> - width >>= 1;
>> - height >>= 1;
>> -
>> - for (y = height - 1; y >= 0; y--)
>> - {
>> - for (x = width - 1; x >= 0; )
>> - {
>> - // note: chroma min width is 2
>> - dstU[x] = weightUnidirC(w0, srcU0[x], round, shift, offset);
>> - x--;
>> - dstU[x] = weightUnidirC(w0, srcU0[x], round, shift, offset);
>> - x--;
>> + srcV0 += src0Stride;
>> + dstV += dststride;
>> }
>> -
>> - srcU0 += src0Stride;
>> - dstU += dststride;
>> - }
>> -
>> - // Chroma V : --------------------------------------------
>> - w0 = wp0[2].w;
>> - offset = wp0[2].offset;
>> - shift = wp0[2].shift + shiftNum;
>> - round = shift ? (1 << (shift - 1)) : 0;
>> -
>> - for (y = height - 1; y >= 0; y--)
>> - {
>> - for (x = width - 1; x >= 0; )
>> - {
>> - // note: chroma min width is 2
>> - dstV[x] = weightUnidirC(w0, srcV0[x], round, shift, offset);
>> - x--;
>> - dstV[x] = weightUnidirC(w0, srcV0[x], round, shift, offset);
>> - x--;
>> - }
>> -
>> - srcV0 += src0Stride;
>> - dstV += dststride;
>> }
>> }
>>
>> @@ -406,7 +430,7 @@
>> * \returns void
>> */
>>
>> -void TComWeightPrediction::addWeightUni(TShortYUV* srcYuv0, UInt
>> partUnitIdx, UInt width, UInt height, wpScalingParam *wp0, TComYuv*
>> outDstYuv, bool justChroma)
>> +void TComWeightPrediction::addWeightUni(TShortYUV* srcYuv0, UInt
>> partUnitIdx, UInt width, UInt height, wpScalingParam *wp0, TComYuv*
>> outDstYuv, bool bLuma, bool bChroma)
>> {
>> short* srcY0 = srcYuv0->getLumaAddr(partUnitIdx);
>> short* srcU0 = srcYuv0->getCbAddr(partUnitIdx);
>> @@ -420,7 +444,7 @@
>> int w0, offset, shiftNum, shift, round;
>> UInt srcStride, dstStride;
>>
>> - if(!justChroma)
>> + if (bLuma)
>> {
>> // Luma : --------------------------------------------
>> w0 = wp0[0].w;
>> @@ -434,28 +458,31 @@
>> primitives.weightpUni((int16_t *)srcY0, dstY, srcStride,
>> dstStride, width, height, w0, round, shift, offset);
>> }
>>
>> - // Chroma U : --------------------------------------------
>> - w0 = wp0[1].w;
>> - offset = wp0[1].offset;
>> - shiftNum = IF_INTERNAL_PREC - X265_DEPTH;
>> - shift = wp0[1].shift + shiftNum;
>> - round = shift ? (1 << (shift - 1)) : 0;
>> + if (bChroma)
>> + {
>> + // Chroma U : --------------------------------------------
>> + w0 = wp0[1].w;
>> + offset = wp0[1].offset;
>> + shiftNum = IF_INTERNAL_PREC - X265_DEPTH;
>> + shift = wp0[1].shift + shiftNum;
>> + round = shift ? (1 << (shift - 1)) : 0;
>>
>> - srcStride = srcYuv0->m_cwidth;
>> - dstStride = outDstYuv->getCStride();
>> + srcStride = srcYuv0->m_cwidth;
>> + dstStride = outDstYuv->getCStride();
>>
>> - width >>= 1;
>> - height >>= 1;
>> + width >>= 1;
>> + height >>= 1;
>>
>> - primitives.weightpUni((int16_t *)srcU0, dstU, srcStride, dstStride,
>> width, height, w0, round, shift, offset);
>> + primitives.weightpUni((int16_t *)srcU0, dstU, srcStride,
>> dstStride, width, height, w0, round, shift, offset);
>>
>> - // Chroma V : --------------------------------------------
>> - w0 = wp0[2].w;
>> - offset = wp0[2].offset;
>> - shift = wp0[2].shift + shiftNum;
>> - round = shift ? (1 << (shift - 1)) : 0;
>> + // Chroma V : --------------------------------------------
>> + w0 = wp0[2].w;
>> + offset = wp0[2].offset;
>> + shift = wp0[2].shift + shiftNum;
>> + round = shift ? (1 << (shift - 1)) : 0;
>>
>> - primitives.weightpUni((int16_t *)srcV0, dstV, srcStride, dstStride,
>> width, height, w0, round, shift, offset);
>> + primitives.weightpUni((int16_t *)srcV0, dstV, srcStride,
>> dstStride, width, height, w0, round, shift, offset);
>> + }
>> }
>>
>> //=======================================================
>> @@ -546,7 +573,7 @@
>> * \param TComYuv* outDstYuv
>> * \returns void
>> */
>> -void TComWeightPrediction::xWeightedPredictionBi(TComDataCU* cu,
>> TComYuv* srcYuv0, TComYuv* srcYuv1, int refIdx0, int refIdx1, UInt partIdx,
>> int width, int height, TComYuv* outDstYuv)
>> +void TComWeightPrediction::xWeightedPredictionBi(TComDataCU* cu,
>> TComYuv* srcYuv0, TComYuv* srcYuv1, int refIdx0, int refIdx1, UInt partIdx,
>> int width, int height, TComYuv* outDstYuv, bool bLuma, bool bChroma)
>> {
>> wpScalingParam *pwp0, *pwp1;
>>
>> @@ -554,15 +581,15 @@
>>
>> if (refIdx0 >= 0 && refIdx1 >= 0)
>> {
>> - addWeightBi(srcYuv0, srcYuv1, partIdx, width, height, pwp0,
>> pwp1, outDstYuv);
>> + addWeightBi(srcYuv0, srcYuv1, partIdx, width, height, pwp0,
>> pwp1, outDstYuv, bLuma, bChroma);
>> }
>> else if (refIdx0 >= 0 && refIdx1 < 0)
>> {
>> - addWeightUni(srcYuv0, partIdx, width, height, pwp0, outDstYuv);
>> + addWeightUni(srcYuv0, partIdx, width, height, pwp0, outDstYuv,
>> bLuma, bChroma);
>> }
>> else if (refIdx0 < 0 && refIdx1 >= 0)
>> {
>> - addWeightUni(srcYuv1, partIdx, width, height, pwp1, outDstYuv);
>> + addWeightUni(srcYuv1, partIdx, width, height, pwp1, outDstYuv,
>> bLuma, bChroma);
>> }
>> else
>> {
>> @@ -582,7 +609,7 @@
>> * \param TComYuv* outDstYuv
>> * \returns void
>> */
>> -void TComWeightPrediction::xWeightedPredictionBi(TComDataCU* cu,
>> TShortYUV* srcYuv0, TShortYUV* srcYuv1, int refIdx0, int refIdx1, UInt
>> partIdx, int width, int height, TComYuv* outDstYuv)
>> +void TComWeightPrediction::xWeightedPredictionBi(TComDataCU* cu,
>> TShortYUV* srcYuv0, TShortYUV* srcYuv1, int refIdx0, int refIdx1, UInt
>> partIdx, int width, int height, TComYuv* outDstYuv, bool bLuma, bool
>> bChroma)
>> {
>> wpScalingParam *pwp0, *pwp1;
>>
>> @@ -590,15 +617,15 @@
>>
>> if (refIdx0 >= 0 && refIdx1 >= 0)
>> {
>> - addWeightBi(srcYuv0, srcYuv1, partIdx, width, height, pwp0,
>> pwp1, outDstYuv);
>> + addWeightBi(srcYuv0, srcYuv1, partIdx, width, height, pwp0,
>> pwp1, outDstYuv, bLuma, bChroma);
>> }
>> else if (refIdx0 >= 0 && refIdx1 < 0)
>> {
>> - addWeightUni(srcYuv0, partIdx, width, height, pwp0, outDstYuv);
>> + addWeightUni(srcYuv0, partIdx, width, height, pwp0, outDstYuv,
>> bLuma, bChroma);
>> }
>> else if (refIdx0 < 0 && refIdx1 >= 0)
>> {
>> - addWeightUni(srcYuv1, partIdx, width, height, pwp1, outDstYuv);
>> + addWeightUni(srcYuv1, partIdx, width, height, pwp1, outDstYuv,
>> bLuma, bChroma);
>> }
>> else
>> {
>> @@ -618,7 +645,7 @@
>> * \param refIdx
>> * \returns void
>> */
>> -void TComWeightPrediction::xWeightedPredictionUni(TComDataCU* cu,
>> TComYuv* srcYuv, UInt partAddr, int width, int height, RefPicList picList,
>> TComYuv*& outPredYuv, int refIdx)
>> +void TComWeightPrediction::xWeightedPredictionUni(TComDataCU* cu,
>> TComYuv* srcYuv, UInt partAddr, int width, int height, RefPicList picList,
>> TComYuv*& outPredYuv, int refIdx, bool bLuma, bool bChroma)
>> {
>> wpScalingParam *pwp, *pwpTmp;
>>
>> @@ -636,7 +663,7 @@
>> {
>> getWpScaling(cu, -1, refIdx, pwpTmp, pwp);
>> }
>> - addWeightUni(srcYuv, partAddr, width, height, pwp, outPredYuv);
>> + addWeightUni(srcYuv, partAddr, width, height, pwp, outPredYuv,
>> bLuma, bChroma);
>> }
>>
>> /** weighted prediction for uni-pred
>> @@ -651,7 +678,7 @@
>> * \param refIdx
>> * \returns void
>> */
>> -void TComWeightPrediction::xWeightedPredictionUni(TComDataCU* cu,
>> TShortYUV* srcYuv, UInt partAddr, int width, int height, RefPicList
>> picList, TComYuv*& outPredYuv, int refIdx)
>> +void TComWeightPrediction::xWeightedPredictionUni(TComDataCU* cu,
>> TShortYUV* srcYuv, UInt partAddr, int width, int height, RefPicList
>> picList, TComYuv*& outPredYuv, int refIdx, bool bLuma, bool bChroma)
>> {
>> wpScalingParam *pwp, *pwpTmp;
>>
>> @@ -669,5 +696,5 @@
>> {
>> getWpScaling(cu, -1, refIdx, pwpTmp, pwp);
>> }
>> - addWeightUni(srcYuv, partAddr, width, height, pwp, outPredYuv);
>> + addWeightUni(srcYuv, partAddr, width, height, pwp, outPredYuv,
>> bLuma, bChroma);
>> }
>> diff -r 3cdbc62783e1 -r ac7aa89eae11
>> source/Lib/TLibCommon/TComWeightPrediction.h
>> --- a/source/Lib/TLibCommon/TComWeightPrediction.h Wed Oct 16
>> 12:17:21 2013 +0530
>> +++ b/source/Lib/TLibCommon/TComWeightPrediction.h Wed Oct 16
>> 17:18:19 2013 +0530
>> @@ -60,15 +60,15 @@
>>
>> void getWpScaling(TComDataCU* cu, int refIdx0, int refIdx1,
>> wpScalingParam *&wp0, wpScalingParam *&wp1);
>>
>> - void addWeightBi(TComYuv* srcYuv0, TComYuv* srcYuv1, UInt
>> partUnitIdx, UInt width, UInt height, wpScalingParam *wp0, wpScalingParam
>> *wp1, TComYuv* outDstYuv, bool bRound = true);
>> - void addWeightBi(TShortYUV* srcYuv0, TShortYUV* srcYuv1, UInt
>> partUnitIdx, UInt width, UInt height, wpScalingParam *wp0, wpScalingParam
>> *wp1, TComYuv* outDstYuv, bool bRound = true);
>> - void addWeightUni(TComYuv* srcYuv0, UInt partUnitIdx, UInt width,
>> UInt height, wpScalingParam *wp0, TComYuv* outDstYuv);
>> - void addWeightUni(TShortYUV* srcYuv0, UInt partUnitIdx, UInt width,
>> UInt height, wpScalingParam *wp0, TComYuv* outDstYuv, bool justChroma =
>> false);
>> + void addWeightBi(TComYuv* srcYuv0, TComYuv* srcYuv1, UInt
>> partUnitIdx, UInt width, UInt height, wpScalingParam *wp0, wpScalingParam
>> *wp1, TComYuv* outDstYuv, bool bRound = true, bool bLuma = true, bool
>> bChroma = true);
>> + void addWeightBi(TShortYUV* srcYuv0, TShortYUV* srcYuv1, UInt
>> partUnitIdx, UInt width, UInt height, wpScalingParam *wp0, wpScalingParam
>> *wp1, TComYuv* outDstYuv, bool bRound = true, bool bLuma = true, bool
>> bChroma = true);
>> + void addWeightUni(TComYuv* srcYuv0, UInt partUnitIdx, UInt width,
>> UInt height, wpScalingParam *wp0, TComYuv* outDstYuv, bool bLuma = true,
>> bool bChroma = true);
>> + void addWeightUni(TShortYUV* srcYuv0, UInt partUnitIdx, UInt width,
>> UInt height, wpScalingParam *wp0, TComYuv* outDstYuv, bool bLuma = true,
>> bool bChroma = true);
>>
>> - void xWeightedPredictionUni(TComDataCU* cu, TComYuv* srcYuv, UInt
>> partAddr, int width, int height, RefPicList picList, TComYuv*& outPredYuv,
>> int refIdx = -1);
>> - void xWeightedPredictionUni(TComDataCU* cu, TShortYUV* srcYuv, UInt
>> partAddr, int width, int height, RefPicList picList, TComYuv*& outPredYuv,
>> int refIdx = -1);
>> - void xWeightedPredictionBi(TComDataCU* cu, TComYuv* srcYuv0,
>> TComYuv* srcYuv1, int refIdx0, int refIdx1, UInt partIdx, int width, int
>> height, TComYuv* outDstYuv);
>> - void xWeightedPredictionBi(TComDataCU* cu, TShortYUV* srcYuv0,
>> TShortYUV* srcYuv1, int refIdx0, int refIdx1, UInt partIdx, int width, int
>> height, TComYuv* outDstYuv);
>> + void xWeightedPredictionUni(TComDataCU* cu, TComYuv* srcYuv, UInt
>> partAddr, int width, int height, RefPicList picList, TComYuv*& outPredYuv,
>> int refIdx = -1, bool bLuma = true, bool bChroma = true);
>> + void xWeightedPredictionUni(TComDataCU* cu, TShortYUV* srcYuv, UInt
>> partAddr, int width, int height, RefPicList picList, TComYuv*& outPredYuv,
>> int refIdx = -1, bool bLuma = true, bool bChroma = true);
>> + void xWeightedPredictionBi(TComDataCU* cu, TComYuv* srcYuv0,
>> TComYuv* srcYuv1, int refIdx0, int refIdx1, UInt partIdx, int width, int
>> height, TComYuv* outDstYuv, bool bLuma = true, bool bChroma = true);
>> + void xWeightedPredictionBi(TComDataCU* cu, TShortYUV* srcYuv0,
>> TShortYUV* srcYuv1, int refIdx0, int refIdx1, UInt partIdx, int width, int
>> height, TComYuv* outDstYuv, bool bLuma = true, bool bChroma = true);
>> };
>> }
>>
>> diff -r 3cdbc62783e1 -r ac7aa89eae11 source/Lib/TLibCommon/TComYuv.cpp
>> --- a/source/Lib/TLibCommon/TComYuv.cpp Wed Oct 16 12:17:21 2013 +0530
>> +++ b/source/Lib/TLibCommon/TComYuv.cpp Wed Oct 16 17:18:19 2013 +0530
>> @@ -234,16 +234,20 @@
>> primitives.blockcpy_pp(uiCWidth, uiCHeight, dstV, dststride, srcV,
>> srcstride);
>> }
>>
>> -void TComYuv::copyPartToPartYuv(TComYuv* dstPicYuv, UInt partIdx, UInt
>> width, UInt height)
>> +void TComYuv::copyPartToPartYuv(TComYuv* dstPicYuv, UInt partIdx, UInt
>> width, UInt height, bool bLuma, bool bChroma)
>> {
>> - copyPartToPartLuma(dstPicYuv, partIdx, width, height);
>> - copyPartToPartChroma(dstPicYuv, partIdx, width >> 1, height >> 1);
>> + if(bLuma)
>> + copyPartToPartLuma(dstPicYuv, partIdx, width, height);
>> + if(bChroma)
>> + copyPartToPartChroma(dstPicYuv, partIdx, width >> 1, height >>
>> 1);
>> }
>>
>> -void TComYuv::copyPartToPartYuv(TShortYUV* dstPicYuv, UInt partIdx, UInt
>> width, UInt height)
>> +void TComYuv::copyPartToPartYuv(TShortYUV* dstPicYuv, UInt partIdx, UInt
>> width, UInt height, bool bLuma, bool bChroma)
>> {
>> - copyPartToPartLuma(dstPicYuv, partIdx, width, height);
>> - copyPartToPartChroma(dstPicYuv, partIdx, width >> 1, height >> 1);
>> + if(bLuma)
>> + copyPartToPartLuma(dstPicYuv, partIdx, width, height);
>> + if(bChroma)
>> + copyPartToPartChroma(dstPicYuv, partIdx, width >> 1, height >>
>> 1);
>> }
>>
>> void TComYuv::copyPartToPartLuma(TComYuv* dstPicYuv, UInt partIdx, UInt
>> width, UInt height)
>> @@ -529,9 +533,11 @@
>> }
>> }
>>
>> -void TComYuv::addAvg(TComYuv* srcYuv0, TComYuv* srcYuv1, UInt
>> partUnitIdx, UInt width, UInt height)
>> +void TComYuv::addAvg(TComYuv* srcYuv0, TComYuv* srcYuv1, UInt
>> partUnitIdx, UInt width, UInt height, bool bLuma, bool bChroma)
>> {
>> int x, y;
>> + UInt src0Stride, src1Stride, dststride;
>> + int shiftNum, offset;
>>
>> Pel* srcY0 = srcYuv0->getLumaAddr(partUnitIdx);
>> Pel* srcU0 = srcYuv0->getCbAddr(partUnitIdx);
>> @@ -545,62 +551,69 @@
>> Pel* dstU = getCbAddr(partUnitIdx);
>> Pel* dstV = getCrAddr(partUnitIdx);
>>
>> - UInt src0Stride = srcYuv0->getStride();
>> - UInt src1Stride = srcYuv1->getStride();
>> - UInt dststride = getStride();
>> - int shiftNum = IF_INTERNAL_PREC + 1 - X265_DEPTH;
>> - int offset = (1 << (shiftNum - 1)) + 2 * IF_INTERNAL_OFFS;
>> + if(bLuma)
>> + {
>> + src0Stride = srcYuv0->getStride();
>> + src1Stride = srcYuv1->getStride();
>> + dststride = getStride();
>> + shiftNum = IF_INTERNAL_PREC + 1 - X265_DEPTH;
>> + offset = (1 << (shiftNum - 1)) + 2 * IF_INTERNAL_OFFS;
>>
>> - for (y = 0; y < height; y++)
>> + for (y = 0; y < height; y++)
>> + {
>> + for (x = 0; x < width; x += 4)
>> + {
>> + dstY[x + 0] = ClipY((srcY0[x + 0] + srcY1[x + 0] +
>> offset) >> shiftNum);
>> + dstY[x + 1] = ClipY((srcY0[x + 1] + srcY1[x + 1] +
>> offset) >> shiftNum);
>> + dstY[x + 2] = ClipY((srcY0[x + 2] + srcY1[x + 2] +
>> offset) >> shiftNum);
>> + dstY[x + 3] = ClipY((srcY0[x + 3] + srcY1[x + 3] +
>> offset) >> shiftNum);
>> + }
>> +
>> + srcY0 += src0Stride;
>> + srcY1 += src1Stride;
>> + dstY += dststride;
>> + }
>> + }
>> + if(bChroma)
>> {
>> - for (x = 0; x < width; x += 4)
>> + shiftNum = IF_INTERNAL_PREC + 1 - X265_DEPTH;
>> + offset = (1 << (shiftNum - 1)) + 2 * IF_INTERNAL_OFFS;
>> +
>> + src0Stride = srcYuv0->getCStride();
>> + src1Stride = srcYuv1->getCStride();
>> + dststride = getCStride();
>> +
>> + width >>= 1;
>> + height >>= 1;
>> +
>> + for (y = height - 1; y >= 0; y--)
>> {
>> - dstY[x + 0] = ClipY((srcY0[x + 0] + srcY1[x + 0] + offset)
>> >> shiftNum);
>> - dstY[x + 1] = ClipY((srcY0[x + 1] + srcY1[x + 1] + offset)
>> >> shiftNum);
>> - dstY[x + 2] = ClipY((srcY0[x + 2] + srcY1[x + 2] + offset)
>> >> shiftNum);
>> - dstY[x + 3] = ClipY((srcY0[x + 3] + srcY1[x + 3] + offset)
>> >> shiftNum);
>> + for (x = width - 1; x >= 0; )
>> + {
>> + // note: chroma min width is 2
>> + dstU[x] = ClipC((srcU0[x] + srcU1[x] + offset) >>
>> shiftNum);
>> + dstV[x] = ClipC((srcV0[x] + srcV1[x] + offset) >>
>> shiftNum);
>> + x--;
>> + dstU[x] = ClipC((srcU0[x] + srcU1[x] + offset) >>
>> shiftNum);
>> + dstV[x] = ClipC((srcV0[x] + srcV1[x] + offset) >>
>> shiftNum);
>> + x--;
>> + }
>> +
>> + srcU0 += src0Stride;
>> + srcU1 += src1Stride;
>> + srcV0 += src0Stride;
>> + srcV1 += src1Stride;
>> + dstU += dststride;
>> + dstV += dststride;
>> }
>> -
>> - srcY0 += src0Stride;
>> - srcY1 += src1Stride;
>> - dstY += dststride;
>> - }
>> -
>> - shiftNum = IF_INTERNAL_PREC + 1 - X265_DEPTH;
>> - offset = (1 << (shiftNum - 1)) + 2 * IF_INTERNAL_OFFS;
>> -
>> - src0Stride = srcYuv0->getCStride();
>> - src1Stride = srcYuv1->getCStride();
>> - dststride = getCStride();
>> -
>> - width >>= 1;
>> - height >>= 1;
>> -
>> - for (y = height - 1; y >= 0; y--)
>> - {
>> - for (x = width - 1; x >= 0; )
>> - {
>> - // note: chroma min width is 2
>> - dstU[x] = ClipC((srcU0[x] + srcU1[x] + offset) >> shiftNum);
>> - dstV[x] = ClipC((srcV0[x] + srcV1[x] + offset) >> shiftNum);
>> - x--;
>> - dstU[x] = ClipC((srcU0[x] + srcU1[x] + offset) >> shiftNum);
>> - dstV[x] = ClipC((srcV0[x] + srcV1[x] + offset) >> shiftNum);
>> - x--;
>> - }
>> -
>> - srcU0 += src0Stride;
>> - srcU1 += src1Stride;
>> - srcV0 += src0Stride;
>> - srcV1 += src1Stride;
>> - dstU += dststride;
>> - dstV += dststride;
>> }
>> }
>>
>> -void TComYuv::addAvg(TShortYUV* srcYuv0, TShortYUV* srcYuv1, UInt
>> partUnitIdx, UInt width, UInt height)
>> +void TComYuv::addAvg(TShortYUV* srcYuv0, TShortYUV* srcYuv1, UInt
>> partUnitIdx, UInt width, UInt height, bool bLuma, bool bChroma)
>> {
>> int x, y;
>> + UInt src0Stride, src1Stride, dststride;
>> + int shiftNum, offset;
>>
>> short* srcY0 = srcYuv0->getLumaAddr(partUnitIdx);
>> short* srcU0 = srcYuv0->getCbAddr(partUnitIdx);
>> @@ -614,56 +627,61 @@
>> Pel* dstU = getCbAddr(partUnitIdx);
>> Pel* dstV = getCrAddr(partUnitIdx);
>>
>> - UInt src0Stride = srcYuv0->m_width;
>> - UInt src1Stride = srcYuv1->m_width;
>> - UInt dststride = getStride();
>> - int shiftNum = IF_INTERNAL_PREC + 1 - X265_DEPTH;
>> - int offset = (1 << (shiftNum - 1)) + 2 * IF_INTERNAL_OFFS;
>> + if(bLuma)
>> + {
>> + src0Stride = srcYuv0->m_width;
>> + src1Stride = srcYuv1->m_width;
>> + dststride = getStride();
>> + shiftNum = IF_INTERNAL_PREC + 1 - X265_DEPTH;
>> + offset = (1 << (shiftNum - 1)) + 2 * IF_INTERNAL_OFFS;
>>
>> - for (y = 0; y < height; y++)
>> + for (y = 0; y < height; y++)
>> + {
>> + for (x = 0; x < width; x += 4)
>> + {
>> + dstY[x + 0] = ClipY((srcY0[x + 0] + srcY1[x + 0] +
>> offset) >> shiftNum);
>> + dstY[x + 1] = ClipY((srcY0[x + 1] + srcY1[x + 1] +
>> offset) >> shiftNum);
>> + dstY[x + 2] = ClipY((srcY0[x + 2] + srcY1[x + 2] +
>> offset) >> shiftNum);
>> + dstY[x + 3] = ClipY((srcY0[x + 3] + srcY1[x + 3] +
>> offset) >> shiftNum);
>> + }
>> +
>> + srcY0 += src0Stride;
>> + srcY1 += src1Stride;
>> + dstY += dststride;
>> + }
>> + }
>> + if(bChroma)
>> {
>> - for (x = 0; x < width; x += 4)
>> + shiftNum = IF_INTERNAL_PREC + 1 - X265_DEPTH;
>> + offset = (1 << (shiftNum - 1)) + 2 * IF_INTERNAL_OFFS;
>> +
>> + src0Stride = srcYuv0->m_cwidth;
>> + src1Stride = srcYuv1->m_cwidth;
>> + dststride = getCStride();
>> +
>> + width >>= 1;
>> + height >>= 1;
>> +
>> + for (y = height - 1; y >= 0; y--)
>> {
>> - dstY[x + 0] = ClipY((srcY0[x + 0] + srcY1[x + 0] + offset)
>> >> shiftNum);
>> - dstY[x + 1] = ClipY((srcY0[x + 1] + srcY1[x + 1] + offset)
>> >> shiftNum);
>> - dstY[x + 2] = ClipY((srcY0[x + 2] + srcY1[x + 2] + offset)
>> >> shiftNum);
>> - dstY[x + 3] = ClipY((srcY0[x + 3] + srcY1[x + 3] + offset)
>> >> shiftNum);
>> + for (x = width - 1; x >= 0; )
>> + {
>> + // note: chroma min width is 2
>> + dstU[x] = ClipC((srcU0[x] + srcU1[x] + offset) >>
>> shiftNum);
>> + dstV[x] = ClipC((srcV0[x] + srcV1[x] + offset) >>
>> shiftNum);
>> + x--;
>> + dstU[x] = ClipC((srcU0[x] + srcU1[x] + offset) >>
>> shiftNum);
>> + dstV[x] = ClipC((srcV0[x] + srcV1[x] + offset) >>
>> shiftNum);
>> + x--;
>> + }
>> +
>> + srcU0 += src0Stride;
>> + srcU1 += src1Stride;
>> + srcV0 += src0Stride;
>> + srcV1 += src1Stride;
>> + dstU += dststride;
>> + dstV += dststride;
>> }
>> -
>> - srcY0 += src0Stride;
>> - srcY1 += src1Stride;
>> - dstY += dststride;
>> - }
>> -
>> - shiftNum = IF_INTERNAL_PREC + 1 - X265_DEPTH;
>> - offset = (1 << (shiftNum - 1)) + 2 * IF_INTERNAL_OFFS;
>> -
>> - src0Stride = srcYuv0->m_cwidth;
>> - src1Stride = srcYuv1->m_cwidth;
>> - dststride = getCStride();
>> -
>> - width >>= 1;
>> - height >>= 1;
>> -
>> - for (y = height - 1; y >= 0; y--)
>> - {
>> - for (x = width - 1; x >= 0; )
>> - {
>> - // note: chroma min width is 2
>> - dstU[x] = ClipC((srcU0[x] + srcU1[x] + offset) >> shiftNum);
>> - dstV[x] = ClipC((srcV0[x] + srcV1[x] + offset) >> shiftNum);
>> - x--;
>> - dstU[x] = ClipC((srcU0[x] + srcU1[x] + offset) >> shiftNum);
>> - dstV[x] = ClipC((srcV0[x] + srcV1[x] + offset) >> shiftNum);
>> - x--;
>> - }
>> -
>> - srcU0 += src0Stride;
>> - srcU1 += src1Stride;
>> - srcV0 += src0Stride;
>> - srcV1 += src1Stride;
>> - dstU += dststride;
>> - dstV += dststride;
>> }
>> }
>>
>> diff -r 3cdbc62783e1 -r ac7aa89eae11 source/Lib/TLibCommon/TComYuv.h
>> --- a/source/Lib/TLibCommon/TComYuv.h Wed Oct 16 12:17:21 2013 +0530
>> +++ b/source/Lib/TLibCommon/TComYuv.h Wed Oct 16 17:18:19 2013 +0530
>> @@ -132,8 +132,8 @@
>> void copyPartToChroma(TComYuv* dstPicYuv, UInt uiSrcPartIdx);
>>
>> // Copy YUV partition buffer to other YUV partition buffer
>> - void copyPartToPartYuv(TComYuv* dstPicYuv, UInt partIdx, UInt
>> width, UInt height);
>> - void copyPartToPartYuv(TShortYUV* dstPicYuv, UInt partIdx, UInt
>> width, UInt height);
>> + void copyPartToPartYuv(TComYuv* dstPicYuv, UInt partIdx, UInt
>> width, UInt height, bool bLuma = true, bool bChroma = true);
>> + void copyPartToPartYuv(TShortYUV* dstPicYuv, UInt partIdx, UInt
>> width, UInt height, bool bLuma = true, bool bChroma = true);
>> void copyPartToPartLuma(TComYuv* dstPicYuv, UInt partIdx, UInt
>> width, UInt height);
>> void copyPartToPartLuma(TShortYUV* dstPicYuv, UInt partIdx, UInt
>> width, UInt height);
>> void copyPartToPartChroma(TComYuv* dstPicYuv, UInt partIdx, UInt
>> width, UInt height);
>> @@ -160,8 +160,8 @@
>> void subtractChroma(TComYuv* srcYuv0, TComYuv* srcYuv1, UInt
>> trUnitIdx, UInt partSize);
>>
>> // (srcYuv0 + srcYuv1)/2 for YUV partition
>> - void addAvg(TComYuv* srcYuv0, TComYuv* srcYuv1, UInt partUnitIdx,
>> UInt width, UInt height);
>> - void addAvg(TShortYUV* srcYuv0, TShortYUV* srcYuv1, UInt
>> partUnitIdx, UInt width, UInt height);
>> + void addAvg(TComYuv* srcYuv0, TComYuv* srcYuv1, UInt partUnitIdx,
>> UInt width, UInt height, bool bLuma = true, bool bChroma = true);
>> + void addAvg(TShortYUV* srcYuv0, TShortYUV* srcYuv1, UInt
>> partUnitIdx, UInt width, UInt height, bool bLuma = true, bool bChroma =
>> true);
>>
>> // Remove High frequency
>> void removeHighFreq(TComYuv* srcYuv, UInt partIdx, UInt width,
>> UInt height);
>> diff -r 3cdbc62783e1 -r ac7aa89eae11 source/Lib/TLibEncoder/TEncSearch.cpp
>> --- a/source/Lib/TLibEncoder/TEncSearch.cpp Wed Oct 16 12:17:21 2013
>> +0530
>> +++ b/source/Lib/TLibEncoder/TEncSearch.cpp Wed Oct 16 17:18:19 2013
>> +0530
>> @@ -2196,7 +2196,7 @@
>> * \param bUseMRG
>> * \returns void
>> */
>> -void TEncSearch::predInterSearch(TComDataCU* cu, TComYuv* predYuv, bool
>> bUseMRG)
>> +void TEncSearch::predInterSearch(TComDataCU* cu, TComYuv* predYuv, bool
>> bUseMRG, bool bLuma, bool bChroma)
>> {
>> MV mvzero(0, 0);
>> MV mv[2];
>> @@ -2521,7 +2521,7 @@
>> #endif
>> }
>> }
>> - motionCompensation(cu, predYuv, REF_PIC_LIST_X, partIdx);
>> + motionCompensation(cu, predYuv, REF_PIC_LIST_X, partIdx, bLuma,
>> bChroma);
>> }
>>
>> setWpScalingDistParam(cu, -1, REF_PIC_LIST_X);
>> diff -r 3cdbc62783e1 -r ac7aa89eae11 source/Lib/TLibEncoder/TEncSearch.h
>> --- a/source/Lib/TLibEncoder/TEncSearch.h Wed Oct 16 12:17:21 2013
>> +0530
>> +++ b/source/Lib/TLibEncoder/TEncSearch.h Wed Oct 16 17:18:19 2013
>> +0530
>> @@ -142,7 +142,7 @@
>> TComYuv* reconYuv, UInt precalcDistC);
>>
>> /// encoder estimation - inter prediction (non-skip)
>> - void predInterSearch(TComDataCU* cu, TComYuv* predYuv, bool bUseMRG
>> = false);
>> + void predInterSearch(TComDataCU* cu, TComYuv* predYuv, bool bUseMRG
>> = false, bool bLuma = true, bool bChroma = true);
>>
>> /// encode residual and compute rd-cost for inter mode
>> void encodeResAndCalcRdInterCU(TComDataCU* cu, TComYuv* fencYuv,
>> TComYuv* predYuv, TShortYUV* resiYuv, TShortYUV* bestResiYuv,
>> _______________________________________________
>> x265-devel mailing list
>> x265-devel at videolan.org
>> https://mailman.videolan.org/listinfo/x265-devel
>>
>
>
> _______________________________________________
> x265-devel mailing list
> x265-devel at videolan.org
> https://mailman.videolan.org/listinfo/x265-devel
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/x265-devel/attachments/20131021/e2df311a/attachment-0001.html>
More information about the x265-devel
mailing list