[x265] [PATCH RFC] Weighted filter integrated to encoder for testing
deepthidevaki at multicorewareinc.com
deepthidevaki at multicorewareinc.com
Wed Jul 24 13:23:28 CEST 2013
# HG changeset patch
# User Deepthi Devaki
# Date 1374664960 -19800
# Node ID d471a3d25d3ec642df5273b75e35922cb30071b8
# Parent fa3b07fcf2128db6e4f54f113225e08c37164c2a
Weighted filter integrated to encoder for testing.
diff -r fa3b07fcf212 -r d471a3d25d3e source/Lib/TLibCommon/TComPicYuv.cpp
--- a/source/Lib/TLibCommon/TComPicYuv.cpp Wed Jul 24 12:07:19 2013 +0530
+++ b/source/Lib/TLibCommon/TComPicYuv.cpp Wed Jul 24 16:52:40 2013 +0530
@@ -251,6 +251,24 @@
m_bIsBorderExtended = true;
}
+Void TComPicYuv::extendPicBorder(x265::ThreadPool *pool, wpScalingParam *w)
+{
+ if (m_bIsBorderExtended)
+ return;
+
+ /* HPEL generation requires luma integer plane to already be extended */
+ xExtendPicCompBorder(getLumaAddr(), getStride(), getWidth(), getHeight(), m_lumaMarginX, m_lumaMarginY);
+
+ xExtendPicCompBorder(getCbAddr(), getCStride(), getWidth() >> 1, getHeight() >> 1, m_chromaMarginX, m_chromaMarginY);
+ xExtendPicCompBorder(getCrAddr(), getCStride(), getWidth() >> 1, getHeight() >> 1, m_chromaMarginX, m_chromaMarginY);
+
+ if (m_refList == NULL)
+ m_refList = new x265::MotionReference(this, pool, w);
+ m_refList->generateReferencePlanes();
+
+ m_bIsBorderExtended = true;
+}
+
Void TComPicYuv::xExtendPicCompBorder(Pel* recon, Int stride, Int width, Int height, Int iMarginX, Int iMarginY)
{
Int x, y;
diff -r fa3b07fcf212 -r d471a3d25d3e source/Lib/TLibCommon/TComPicYuv.h
--- a/source/Lib/TLibCommon/TComPicYuv.h Wed Jul 24 12:07:19 2013 +0530
+++ b/source/Lib/TLibCommon/TComPicYuv.h Wed Jul 24 16:52:40 2013 +0530
@@ -43,6 +43,7 @@
#include "x265.h"
#include "reference.h"
+#include "TComSlice.h"
class TShortYUV;
@@ -184,6 +185,7 @@
// Extend function of picture buffer
Void extendPicBorder(x265::ThreadPool *pool);
+ Void extendPicBorder(x265::ThreadPool *pool, wpScalingParam *w);
// Dump picture
Void dump(Char* pFileName, Bool bAdd = false);
diff -r fa3b07fcf212 -r d471a3d25d3e source/Lib/TLibCommon/TComRdCost.cpp
--- a/source/Lib/TLibCommon/TComRdCost.cpp Wed Jul 24 12:07:19 2013 +0530
+++ b/source/Lib/TLibCommon/TComRdCost.cpp Wed Jul 24 16:52:40 2013 +0530
@@ -201,10 +201,10 @@
UInt TComRdCost::xGetSAD(DistParam* distParam)
{
- if (distParam->applyWeight)
- {
- return xGetSADw(distParam);
- }
+ //if (distParam->applyWeight)
+ //{
+ // return xGetSADw(distParam);
+ //}
Pel* org = distParam->fenc;
Pel* cur = distParam->fref;
@@ -230,10 +230,10 @@
UInt TComRdCost::xGetSAD4(DistParam* distParam)
{
- if (distParam->applyWeight)
- {
- return xGetSADw(distParam);
- }
+ //if (distParam->applyWeight)
+ //{
+ // return xGetSADw(distParam);
+ //}
Pel* org = distParam->fenc;
Pel* cur = distParam->fref;
@@ -261,10 +261,10 @@
UInt TComRdCost::xGetSAD8(DistParam* distParam)
{
- if (distParam->applyWeight)
- {
- return xGetSADw(distParam);
- }
+ //if (distParam->applyWeight)
+ //{
+ // return xGetSADw(distParam);
+ //}
Pel* org = distParam->fenc;
Pel* cur = distParam->fref;
@@ -296,10 +296,10 @@
UInt TComRdCost::xGetSAD16(DistParam* distParam)
{
- if (distParam->applyWeight)
- {
- return xGetSADw(distParam);
- }
+ //if (distParam->applyWeight)
+ //{
+ // return xGetSADw(distParam);
+ //}
Pel* org = distParam->fenc;
Pel* cur = distParam->fref;
@@ -339,10 +339,10 @@
UInt TComRdCost::xGetSAD12(DistParam* distparam)
{
- if (distparam->applyWeight)
- {
- return xGetSADw(distparam);
- }
+ //if (distparam->applyWeight)
+ //{
+ // return xGetSADw(distparam);
+ //}
Pel* org = distparam->fenc;
Pel* cur = distparam->fref;
@@ -421,10 +421,10 @@
UInt TComRdCost::xGetSAD32(DistParam* distParam)
{
- if (distParam->applyWeight)
- {
- return xGetSADw(distParam);
- }
+ //if (distParam->applyWeight)
+ //{
+ // return xGetSADw(distParam);
+ //}
Pel* org = distParam->fenc;
Pel* cur = distParam->fref;
@@ -480,10 +480,10 @@
UInt TComRdCost::xGetSAD24(DistParam* distParam)
{
- if (distParam->applyWeight)
- {
- return xGetSADw(distParam);
- }
+ //if (distParam->applyWeight)
+ //{
+ // return xGetSADw(distParam);
+ //}
Pel* org = distParam->fenc;
Pel* cur = distParam->fref;
@@ -531,10 +531,10 @@
UInt TComRdCost::xGetSAD64(DistParam* distParam)
{
- if (distParam->applyWeight)
- {
- return xGetSADw(distParam);
- }
+ //if (distParam->applyWeight)
+ //{
+ // return xGetSADw(distParam);
+ //}
Pel* org = distParam->fenc;
Pel* cur = distParam->fref;
@@ -623,10 +623,10 @@
UInt TComRdCost::xGetSAD48(DistParam* distParam)
{
- if (distParam->applyWeight)
- {
- return xGetSADw(distParam);
- }
+ //if (distParam->applyWeight)
+ //{
+ // return xGetSADw(distParam);
+ //}
Pel* org = distParam->fenc;
Pel* cur = distParam->fref;
@@ -724,10 +724,10 @@
UInt TComRdCost::xGetSSE(DistParam* distParam)
{
- if (distParam->applyWeight)
- {
- return xGetSSEw(distParam);
- }
+ //if (distParam->applyWeight)
+ //{
+ // return xGetSSEw(distParam);
+ //}
Int rows = distParam->rows;
Int cols = distParam->cols;
@@ -788,11 +788,11 @@
UInt TComRdCost::xGetSSE4(DistParam* distParam)
{
- if (distParam->applyWeight)
- {
- assert(distParam->cols == 4);
- return xGetSSEw(distParam);
- }
+ //if (distParam->applyWeight)
+ //{
+ // assert(distParam->cols == 4);
+ // return xGetSSEw(distParam);
+ //}
Int rows = distParam->rows;
Int strideOrg = distParam->fencstride;
@@ -860,11 +860,11 @@
UInt TComRdCost::xGetSSE8(DistParam* distParam)
{
- if (distParam->applyWeight)
- {
- assert(distParam->cols == 8);
- return xGetSSEw(distParam);
- }
+ //if (distParam->applyWeight)
+ //{
+ // assert(distParam->cols == 8);
+ // return xGetSSEw(distParam);
+ //}
Pel* org = distParam->fenc;
Pel* cur = distParam->fref;
@@ -948,11 +948,11 @@
UInt TComRdCost::xGetSSE16(DistParam* distParam)
{
- if (distParam->applyWeight)
- {
- assert(distParam->cols == 16);
- return xGetSSEw(distParam);
- }
+ //if (distParam->applyWeight)
+ //{
+ // assert(distParam->cols == 16);
+ // return xGetSSEw(distParam);
+ //}
Pel* org = distParam->fenc;
Pel* cur = distParam->fref;
Int rows = distParam->rows;
@@ -1039,10 +1039,10 @@
UInt TComRdCost::xGetSSE16N(DistParam* distParam)
{
- if (distParam->applyWeight)
- {
- return xGetSSEw(distParam);
- }
+ //if (distParam->applyWeight)
+ //{
+ // return xGetSSEw(distParam);
+ //}
Pel* org = distParam->fenc;
Pel* cur = distParam->fref;
Int rows = distParam->rows;
@@ -1159,11 +1159,11 @@
UInt TComRdCost::xGetSSE32(DistParam* distParam)
{
- if (distParam->applyWeight)
- {
- assert(distParam->cols == 32);
- return xGetSSEw(distParam);
- }
+ //if (distParam->applyWeight)
+ //{
+ // assert(distParam->cols == 32);
+ // return xGetSSEw(distParam);
+ //}
Pel* org = distParam->fenc;
Pel* cur = distParam->fref;
Int rows = distParam->rows;
@@ -1344,11 +1344,11 @@
UInt TComRdCost::xGetSSE64(DistParam* distParam)
{
- if (distParam->applyWeight)
- {
- assert(distParam->cols == 64);
- return xGetSSEw(distParam);
- }
+ //if (distParam->applyWeight)
+ //{
+ // assert(distParam->cols == 64);
+ // return xGetSSEw(distParam);
+ //}
Pel* org = distParam->fenc;
Pel* cur = distParam->fref;
Int rows = distParam->rows;
@@ -1581,10 +1581,10 @@
UInt TComRdCost::xGetHADs4(DistParam* distParam)
{
- if (distParam->applyWeight)
- {
- return xGetHADs4w(distParam);
- }
+ //if (distParam->applyWeight)
+ //{
+ // return xGetHADs4w(distParam);
+ //}
Pel* org = distParam->fenc;
Pel* cur = distParam->fref;
Int rows = distParam->rows;
@@ -1607,10 +1607,10 @@
UInt TComRdCost::xGetHADs8(DistParam* distParam)
{
- if (distParam->applyWeight)
- {
- return xGetHADs8w(distParam);
- }
+ //if (distParam->applyWeight)
+ //{
+ // return xGetHADs8w(distParam);
+ //}
Pel* org = distParam->fenc;
Pel* cur = distParam->fref;
Int rows = distParam->rows;
@@ -1643,10 +1643,10 @@
UInt TComRdCost::xGetHADs(DistParam* distParam)
{
- if (distParam->applyWeight)
- {
- return xGetHADsw(distParam);
- }
+ //if (distParam->applyWeight)
+ //{
+ // return xGetHADsw(distParam);
+ //}
Pel* org = distParam->fenc;
Pel* cur = distParam->fref;
Int rows = distParam->rows;
diff -r fa3b07fcf212 -r d471a3d25d3e source/Lib/TLibCommon/TComSlice.h
--- a/source/Lib/TLibCommon/TComSlice.h Wed Jul 24 12:07:19 2013 +0530
+++ b/source/Lib/TLibCommon/TComSlice.h Wed Jul 24 16:52:40 2013 +0530
@@ -1413,7 +1413,6 @@
UInt m_sliceSegmentBits;
Bool m_bFinalized;
- wpScalingParam m_weightPredTable[2][MAX_NUM_REF][3]; // [REF_PIC_LIST_0 or REF_PIC_LIST_1][refIdx][0:Y, 1:U, 2:V]
wpACDCParam m_weightACDCParam[3]; // [0:Y, 1:U, 2:V]
std::vector<UInt> m_tileByteLocation;
@@ -1431,6 +1430,8 @@
public:
+ wpScalingParam m_weightPredTable[2][MAX_NUM_REF][3]; // [REF_PIC_LIST_0 or REF_PIC_LIST_1][refIdx][0:Y, 1:U, 2:V]
+
TComSlice();
virtual ~TComSlice();
Void initSlice();
diff -r fa3b07fcf212 -r d471a3d25d3e source/Lib/TLibEncoder/TEncSearch.cpp
--- a/source/Lib/TLibEncoder/TEncSearch.cpp Wed Jul 24 12:07:19 2013 +0530
+++ b/source/Lib/TLibEncoder/TEncSearch.cpp Wed Jul 24 16:52:40 2013 +0530
@@ -3331,7 +3331,8 @@
setWpScalingDistParam(cu, refIdxPred, picList);
- Pel* fref = cu->getSlice()->getRefPic(picList, refIdxPred)->getPicYuvRec()->getLumaAddr(cu->getAddr(), cu->getZorderIdxInCU() + partAddr);
+ Pel* fref = cu->getSlice()->getRefPic(picList, refIdxPred)->getPicYuvRec()->getLumaFilterBlock(0,0,cu->getAddr(), cu->getZorderIdxInCU() + partAddr);
+
Int stride = cu->getSlice()->getRefPic(picList, refIdxPred)->getPicYuvRec()->getStride();
// Configure the MV bit cost calculator
diff -r fa3b07fcf212 -r d471a3d25d3e source/Lib/TLibEncoder/TEncSlice.cpp
--- a/source/Lib/TLibEncoder/TEncSlice.cpp Wed Jul 24 12:07:19 2013 +0530
+++ b/source/Lib/TLibEncoder/TEncSlice.cpp Wed Jul 24 16:52:40 2013 +0530
@@ -421,17 +421,35 @@
xCheckWPEnable(slice);
}
+ wpexplicit = (slice->getSliceType() == P_SLICE && slice->getPPS()->getUseWP());
+
Int numPredDir = slice->isInterP() ? 1 : 2;
- for (Int refList = 0; refList < numPredDir; refList++)
- {
- RefPicList picList = (refList ? REF_PIC_LIST_1 : REF_PIC_LIST_0);
- for (Int refIdxTemp = 0; refIdxTemp < slice->getNumRefIdx(picList); refIdxTemp++)
- {
- // To do: Call the merged IP + weighted frames if weighted prediction enabled
- slice->getRefPic(picList, refIdxTemp)->getPicYuvRec()->extendPicBorder(x265::ThreadPool::getThreadPool());
+ if(wpexplicit)
+ {
+ for (Int refList = 0; refList < numPredDir; refList++)
+ {
+ RefPicList picList = (refList ? REF_PIC_LIST_1 : REF_PIC_LIST_0);
+ for (Int refIdxTemp = 0; refIdxTemp < slice->getNumRefIdx(picList); refIdxTemp++)
+ {
+ //Call the merged IP + weighted frames if weighted prediction enabled
+ wpScalingParam *w = &(slice->m_weightPredTable[picList][refIdxTemp][0]);
+ slice->getRefPic(picList, refIdxTemp)->getPicYuvRec()->extendPicBorder(x265::ThreadPool::getThreadPool(), w);
+ }
}
}
+ else
+ {
+ for (Int refList = 0; refList < numPredDir; refList++)
+ {
+ RefPicList picList = (refList ? REF_PIC_LIST_1 : REF_PIC_LIST_0);
+ for (Int refIdxTemp = 0; refIdxTemp < slice->getNumRefIdx(picList); refIdxTemp++)
+ {
+ slice->getRefPic(picList, refIdxTemp)->getPicYuvRec()->extendPicBorder(x265::ThreadPool::getThreadPool());
+ }
+ }
+ }
+
frameEncoder->encode(pic, slice);
diff -r fa3b07fcf212 -r d471a3d25d3e source/common/ipfilter.cpp
--- a/source/common/ipfilter.cpp Wed Jul 24 12:07:19 2013 +0530
+++ b/source/common/ipfilter.cpp Wed Jul 24 16:52:40 2013 +0530
@@ -468,6 +468,7 @@
filterVertical_s_p<8>(src, srcStride, dstI, dstStride, block_width, block_height, g_lumaFilter[2]);
filterVertical_s_p<8>(src, srcStride, dstE, dstStride, block_width, block_height, g_lumaFilter[1]);
filterVertical_s_p<8>(src, srcStride, dstP, dstStride, block_width, block_height, g_lumaFilter[3]);
+
extendPicCompBorder(dstE, dstStride, block_width, block_height, marginX, marginY);
extendPicCompBorder(dstI, dstStride, block_width, block_height, marginX, marginY);
extendPicCompBorder(dstP, dstStride, block_width, block_height, marginX, marginY);
@@ -509,7 +510,7 @@
// filterHorizontal, Multiplane, Weighted
void filterHorizontalWeighted(pixel *src, int srcStride, short *midF, short* midA, short* midB, short* midC, int midStride,
- pixel *dstA, pixel *dstB, pixel *dstC, int dstStride, int block_width, int block_height,
+ pixel *dstF, pixel *dstA, pixel *dstB, pixel *dstC, int dstStride, int block_width, int block_height,
int marginX, int marginY, int w, int roundw, int shiftw, int offsetw)
{
filterConvertPelToShort(src, srcStride, midF, midStride, block_width, block_height);
@@ -517,10 +518,12 @@
filterHorizontal_p_s<8>(src, srcStride, midA, midStride, block_width, block_height, g_lumaFilter[1]);
filterHorizontal_p_s<8>(src, srcStride, midC, midStride, block_width, block_height, g_lumaFilter[3]);
+ weightUnidir(midF, dstF, midStride, dstStride, block_width, block_height, w, roundw, shiftw, offsetw);
weightUnidir(midA, dstA, midStride, dstStride, block_width, block_height, w, roundw, shiftw, offsetw);
weightUnidir(midB, dstB, midStride, dstStride, block_width, block_height, w, roundw, shiftw, offsetw);
weightUnidir(midC, dstC, midStride, dstStride, block_width, block_height, w, roundw, shiftw, offsetw);
+ extendPicCompBorder(dstF, dstStride, block_width, block_height, marginX, marginY);
extendPicCompBorder(dstA, dstStride, block_width, block_height, marginX, marginY);
extendPicCompBorder(dstB, dstStride, block_width, block_height, marginX, marginY);
extendPicCompBorder(dstC, dstStride, block_width, block_height, marginX, marginY);
@@ -590,4 +593,5 @@
p.filterVwghtd = filterVerticalWeighted;
p.filterHwghtd = filterHorizontalWeighted;
}
+
}
diff -r fa3b07fcf212 -r d471a3d25d3e source/common/primitives.h
--- a/source/common/primitives.h Wed Jul 24 12:07:19 2013 +0530
+++ b/source/common/primitives.h Wed Jul 24 16:52:40 2013 +0530
@@ -223,7 +223,7 @@
typedef void (*filterHmulti_t)(pixel *src, int srcStride, short *midF, short* midA, short* midB, short* midC, int midStride,
pixel *dstA, pixel *dstB, pixel *dstC, int dstStride, int block_width, int block_height, int marginX, int marginY);
typedef void (*filterHwghtd_t)(pixel *src, int srcStride, short *midF, short* midA, short* midB, short* midC, int midStride,
- pixel *pDstA, pixel *pDstB, pixel *pDstC, int pDstStride, int block_width, int block_height,
+ pixel *dstF, pixel *pDstA, pixel *pDstB, pixel *pDstC, int pDstStride, int block_width, int block_height,
int marginX, int marginY, int w, int roundw, int shiftw, int offsetw);
typedef void (*weightpUni_t)(short *src, pixel *dst, int srcStride, int dstStride, int width, int height, int w0, int round, int shift, int offset);
typedef void (*scale_t)(pixel *dst, pixel *src, intptr_t stride);
diff -r fa3b07fcf212 -r d471a3d25d3e source/common/reference.cpp
--- a/source/common/reference.cpp Wed Jul 24 12:07:19 2013 +0530
+++ b/source/common/reference.cpp Wed Jul 24 16:52:40 2013 +0530
@@ -68,6 +68,47 @@
m_lumaPlane[i][j] = (pixel*)xMalloc(pixel, padwidth * padheight) + m_startPad;
}
}
+
+ m_isWeighted = false;
+}
+
+MotionReference::MotionReference(TComPicYuv* pic, ThreadPool *pool, wpScalingParam *w)
+ : JobProvider(pool)
+{
+ m_reconPic = pic;
+ int width = pic->getWidth();
+ int height = pic->getHeight();
+ m_lumaStride = pic->getStride();
+ m_startPad = pic->m_lumaMarginY * m_lumaStride + pic->m_lumaMarginX;
+ m_intStride = width + s_tmpMarginX * 4;
+ m_extendOffset = s_tmpMarginY * m_lumaStride + s_tmpMarginX;
+ m_offsetToLuma = s_tmpMarginY * 2 * m_intStride + s_tmpMarginX * 2;
+ m_filterWidth = width + s_tmpMarginX * 2;
+ m_filterHeight = height + s_tmpMarginY * 2;
+ m_next = NULL;
+
+ /* directly reference the pre-extended integer pel plane */
+ //m_lumaPlane[0][0] = pic->m_picBufY + m_startPad;
+
+ /* Create buffers for Hpel/Qpel Planes */
+ size_t padwidth = width + pic->m_lumaMarginX * 2;
+ size_t padheight = height + pic->m_lumaMarginY * 2;
+ for (int i = 0; i < 4; i++)
+ {
+ for (int j = 0; j < 4; j++)
+ {
+ //if (i == 0 && j == 0)
+ // continue;
+ m_lumaPlane[i][j] = (pixel*)xMalloc(pixel, padwidth * padheight) + m_startPad;
+ }
+ }
+
+ //Innitialization of weight parameters
+ m_weight = w->inputWeight;
+ m_offset = w->inputOffset * (1 << (g_bitDepth - 8));
+ m_shift = w->log2WeightDenom;
+ m_round = (w->log2WeightDenom >= 1) ? (1 << (w->log2WeightDenom - 1)) : (0);
+ m_isWeighted = true;
}
MotionReference::~MotionReference()
@@ -105,7 +146,23 @@
/* This one function call generates the four intermediate (short) planes for each
* QPEL offset in the horizontal direction. At the same time it outputs the three
* Y=0 output (padded pixel) planes since they require no vertical interpolation */
- primitives.filterHmulti(srcPtr, m_lumaStride, // source buffer
+ if(m_isWeighted)
+ {
+ primitives.filterHwghtd(srcPtr, m_lumaStride, // source buffer
+ intPtrF, intPtrA, intPtrB, intPtrC, m_intStride, // 4 intermediate HPEL buffers
+ m_lumaPlane[0][0] + bufOffset,
+ m_lumaPlane[1][0] + bufOffset,
+ m_lumaPlane[2][0] + bufOffset,
+ m_lumaPlane[3][0] + bufOffset, m_lumaStride, // 3 (x=n, y=0) output buffers (no V interp)
+ m_filterWidth + (2 * s_intMarginX), // filter dimensions with margins
+ m_filterHeight + (2 * s_intMarginY),
+ m_reconPic->m_lumaMarginX - s_tmpMarginX - s_intMarginX, // pixel extension margins
+ m_reconPic->m_lumaMarginY - s_tmpMarginY - s_intMarginY,
+ m_weight, m_round, m_shift, m_offset);
+ }
+ else
+ {
+ primitives.filterHmulti(srcPtr, m_lumaStride, // source buffer
intPtrF, intPtrA, intPtrB, intPtrC, m_intStride, // 4 intermediate HPEL buffers
m_lumaPlane[1][0] + bufOffset,
m_lumaPlane[2][0] + bufOffset,
@@ -114,6 +171,7 @@
m_filterHeight + (2 * s_intMarginY),
m_reconPic->m_lumaMarginX - s_tmpMarginX - s_intMarginX, // pixel extension margins
m_reconPic->m_lumaMarginY - s_tmpMarginY - s_intMarginY);
+ }
}
if (!m_pool)
@@ -173,5 +231,12 @@
pixel *dstPtr2 = m_lumaPlane[x][2] - s_tmpMarginY * m_lumaStride - s_tmpMarginX;
pixel *dstPtr3 = m_lumaPlane[x][3] - s_tmpMarginY * m_lumaStride - s_tmpMarginX;
- primitives.filterVmulti(intPtr, m_intStride, dstPtr1, dstPtr2, dstPtr3, m_lumaStride, m_filterWidth, m_filterHeight, m_reconPic->m_lumaMarginX - s_tmpMarginX, m_reconPic->m_lumaMarginY - s_tmpMarginY);
+ if(m_isWeighted)
+ {
+ primitives.filterVwghtd(intPtr, m_intStride, dstPtr1, dstPtr2, dstPtr3, m_lumaStride, m_filterWidth, m_filterHeight, m_reconPic->m_lumaMarginX - s_tmpMarginX, m_reconPic->m_lumaMarginY - s_tmpMarginY, m_weight, m_round, m_shift, m_offset);
+ }
+ else
+ {
+ primitives.filterVmulti(intPtr, m_intStride, dstPtr1, dstPtr2, dstPtr3, m_lumaStride, m_filterWidth, m_filterHeight, m_reconPic->m_lumaMarginX - s_tmpMarginX, m_reconPic->m_lumaMarginY - s_tmpMarginY);
+ }
}
diff -r fa3b07fcf212 -r d471a3d25d3e source/common/reference.h
--- a/source/common/reference.h Wed Jul 24 12:07:19 2013 +0530
+++ b/source/common/reference.h Wed Jul 24 16:52:40 2013 +0530
@@ -27,6 +27,7 @@
#include "primitives.h"
#include "threading.h"
#include "threadpool.h"
+#include "TLibCommon/TComSlice.h"
class TComPicYuv;
@@ -38,6 +39,7 @@
public:
MotionReference(TComPicYuv*, ThreadPool *);
+ MotionReference(TComPicYuv*, ThreadPool *, wpScalingParam *w);
~MotionReference();
@@ -75,6 +77,12 @@
int m_filterHeight;
short *m_intermediateValues;
+ int m_weight;
+ int m_offset;
+ int m_shift;
+ int m_round;
+ bool m_isWeighted;
+
MotionReference& operator =(const MotionReference&);
};
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: x265.patch
Type: text/x-patch
Size: 22031 bytes
Desc: not available
URL: <http://mailman.videolan.org/private/x265-devel/attachments/20130724/98e7eec9/attachment-0001.bin>
More information about the x265-devel
mailing list