[x265-commits] [x265] reduce unused context models
Satoshi Nakagawa
nakagawa424 at oki.com
Mon Jan 27 08:03:51 CET 2014
details: http://hg.videolan.org/x265/rev/e0c81b78e529
branches:
changeset: 5905:e0c81b78e529
user: Satoshi Nakagawa <nakagawa424 at oki.com>
date: Sun Jan 26 21:07:00 2014 +0900
description:
reduce unused context models
Subject: [x265] magic number
details: http://hg.videolan.org/x265/rev/ed2e9fe1a732
branches:
changeset: 5906:ed2e9fe1a732
user: Satoshi Nakagawa <nakagawa424 at oki.com>
date: Mon Jan 27 13:24:11 2014 +0900
description:
magic number
Subject: [x265] cleanup TComCUMvField::m_cAMVPInfo
details: http://hg.videolan.org/x265/rev/2fc36d0fd1b2
branches:
changeset: 5907:2fc36d0fd1b2
user: Satoshi Nakagawa <nakagawa424 at oki.com>
date: Sat Jan 25 22:35:49 2014 +0900
description:
cleanup TComCUMvField::m_cAMVPInfo
Subject: [x265] HM: context table
details: http://hg.videolan.org/x265/rev/1ea8a52b4f54
branches:
changeset: 5908:1ea8a52b4f54
user: Satoshi Nakagawa <nakagawa424 at oki.com>
date: Sat Jan 25 13:26:43 2014 +0900
description:
HM: context table
Subject: [x265] Merge with stable
details: http://hg.videolan.org/x265/rev/b59b1e579f78
branches:
changeset: 5909:b59b1e579f78
user: Steve Borho <steve at borho.org>
date: Mon Jan 27 00:10:56 2014 -0600
description:
Merge with stable
diffstat:
source/Lib/TLibCommon/ContextTables.h | 50 +++++++++++++------------------
source/Lib/TLibCommon/TComMotionInfo.h | 3 -
source/Lib/TLibCommon/TComPrediction.cpp | 17 ----------
source/Lib/TLibCommon/TComPrediction.h | 3 -
source/Lib/TLibEncoder/TEncCu.cpp | 10 ------
source/Lib/TLibEncoder/TEncCu.h | 1 -
source/Lib/TLibEncoder/TEncSbac.cpp | 26 +++++++--------
source/Lib/TLibEncoder/TEncSearch.cpp | 46 +++++++++-------------------
source/Lib/TLibEncoder/TEncSearch.h | 7 +--
source/common/common.cpp | 4 +-
source/encoder/frameencoder.cpp | 5 ++-
source/input/y4m.cpp | 8 +++++
source/input/yuv.cpp | 8 +++++
13 files changed, 73 insertions(+), 115 deletions(-)
diffs (truncated from 535 to 300 lines):
diff -r 237bf6667405 -r b59b1e579f78 source/Lib/TLibCommon/ContextTables.h
--- a/source/Lib/TLibCommon/ContextTables.h Fri Jan 24 14:43:31 2014 -0600
+++ b/source/Lib/TLibCommon/ContextTables.h Mon Jan 27 00:10:56 2014 -0600
@@ -56,8 +56,7 @@
#define NUM_MERGE_FLAG_EXT_CTX 1 ///< number of context models for merge flag of merge extended
#define NUM_MERGE_IDX_EXT_CTX 1 ///< number of context models for merge index of merge extended
-#define NUM_PART_SIZE_CTX 3 ///< number of context models for partition size
-#define NUM_CU_AMP_CTX 1 ///< number of context models for partition size (AMP)
+#define NUM_PART_SIZE_CTX 4 ///< number of context models for partition size
#define NUM_PRED_MODE_CTX 1 ///< number of context models for prediction mode
#define NUM_ADI_CTX 1 ///< number of context models for intra prediction
@@ -78,7 +77,9 @@
#define NUM_SIG_FLAG_CTX_LUMA 27 ///< number of context models for luma sig flag
#define NUM_SIG_FLAG_CTX_CHROMA 15 ///< number of context models for chroma sig flag
-#define NUM_CTX_LAST_FLAG_XY 15 ///< number of context models for last coefficient position
+#define NUM_CTX_LAST_FLAG_XY 18 ///< number of context models for last coefficient position
+#define NUM_CTX_LAST_FLAG_XY_LUMA 15 ///< number of context models for last coefficient position of luma
+#define NUM_CTX_LAST_FLAG_XY_CHROMA 3 ///< number of context models for last coefficient position of chroma
#define NUM_ONE_FLAG_CTX 24 ///< number of context models for greater than 1 flag
#define NUM_ONE_FLAG_CTX_LUMA 16 ///< number of context models for greater than 1 flag of luma
@@ -87,7 +88,7 @@
#define NUM_ABS_FLAG_CTX_LUMA 4 ///< number of context models for greater than 2 flag of luma
#define NUM_ABS_FLAG_CTX_CHROMA 2 ///< number of context models for greater than 2 flag of chroma
-#define NUM_MVP_IDX_CTX 2 ///< number of context models for MVP index
+#define NUM_MVP_IDX_CTX 1 ///< number of context models for MVP index
#define NUM_SAO_MERGE_FLAG_CTX 1 ///< number of context models for SAO merge flags
#define NUM_SAO_TYPE_IDX_CTX 1 ///< number of context models for SAO type index
@@ -115,12 +116,11 @@
#define OFF_SIG_CG_FLAG_CTX (OFF_QT_ROOT_CBF_CTX + NUM_QT_ROOT_CBF_CTX)
#define OFF_SIG_FLAG_CTX (OFF_SIG_CG_FLAG_CTX + 2 * NUM_SIG_CG_FLAG_CTX)
#define OFF_CTX_LAST_FLAG_X (OFF_SIG_FLAG_CTX + NUM_SIG_FLAG_CTX)
-#define OFF_CTX_LAST_FLAG_Y (OFF_CTX_LAST_FLAG_X + 2 * NUM_CTX_LAST_FLAG_XY)
-#define OFF_ONE_FLAG_CTX (OFF_CTX_LAST_FLAG_Y + 2 * NUM_CTX_LAST_FLAG_XY)
+#define OFF_CTX_LAST_FLAG_Y (OFF_CTX_LAST_FLAG_X + NUM_CTX_LAST_FLAG_XY)
+#define OFF_ONE_FLAG_CTX (OFF_CTX_LAST_FLAG_Y + NUM_CTX_LAST_FLAG_XY)
#define OFF_ABS_FLAG_CTX (OFF_ONE_FLAG_CTX + NUM_ONE_FLAG_CTX)
#define OFF_MVP_IDX_CTX (OFF_ABS_FLAG_CTX + NUM_ABS_FLAG_CTX)
-#define OFF_CU_AMP_CTX (OFF_MVP_IDX_CTX + NUM_MVP_IDX_CTX)
-#define OFF_SAO_MERGE_FLAG_CTX (OFF_CU_AMP_CTX + NUM_CU_AMP_CTX)
+#define OFF_SAO_MERGE_FLAG_CTX (OFF_MVP_IDX_CTX + NUM_MVP_IDX_CTX)
#define OFF_SAO_TYPE_IDX_CTX (OFF_SAO_MERGE_FLAG_CTX + NUM_SAO_MERGE_FLAG_CTX)
#define OFF_TRANSFORMSKIP_FLAG_CTX (OFF_SAO_TYPE_IDX_CTX + NUM_SAO_TYPE_IDX_CTX)
#define OFF_CU_TRANSQUANT_BYPASS_FLAG_CTX (OFF_TRANSFORMSKIP_FLAG_CTX + 2 * NUM_TRANSFORMSKIP_FLAG_CTX)
@@ -203,17 +203,9 @@ static const uint8_t
static const uint8_t
INIT_PART_SIZE[3][NUM_PART_SIZE_CTX] =
{
- { 154, 139, CNU, },
- { 154, 139, CNU, },
- { 184, CNU, CNU, },
-};
-
-static const uint8_t
- INIT_CU_AMP_POS[3][NUM_CU_AMP_CTX] =
-{
- { 154, },
- { 154, },
- { CNU, },
+ { 154, 139, 154, 154 },
+ { 154, 139, 154, 154 },
+ { 184, CNU, CNU, CNU },
};
static const uint8_t
@@ -275,9 +267,9 @@ static const uint8_t
static const uint8_t
INIT_QT_CBF[3][2 * NUM_QT_CBF_CTX] =
{
- { 153, 111, CNU, CNU, 149, 92, 167, CNU, },
- { 153, 111, CNU, CNU, 149, 107, 167, CNU, },
- { 111, 141, CNU, CNU, 94, 138, 182, CNU, },
+ { 153, 111, CNU, CNU, 149, 92, 167, 154, },
+ { 153, 111, CNU, CNU, 149, 107, 167, 154, },
+ { 111, 141, CNU, CNU, 94, 138, 182, 154, },
};
static const uint8_t
@@ -289,14 +281,14 @@ static const uint8_t
};
static const uint8_t
- INIT_LAST[3][2 * NUM_CTX_LAST_FLAG_XY] =
+ INIT_LAST[3][NUM_CTX_LAST_FLAG_XY] =
{
{ 125, 110, 124, 110, 95, 94, 125, 111, 111, 79, 125, 126, 111, 111, 79,
- 108, 123, 93, CNU, CNU, CNU, CNU, CNU, CNU, CNU, CNU, CNU, CNU, CNU, CNU, },
+ 108, 123, 93 },
{ 125, 110, 94, 110, 95, 79, 125, 111, 110, 78, 110, 111, 111, 95, 94,
- 108, 123, 108, CNU, CNU, CNU, CNU, CNU, CNU, CNU, CNU, CNU, CNU, CNU, CNU, },
+ 108, 123, 108 },
{ 110, 110, 124, 125, 140, 153, 125, 127, 140, 109, 111, 143, 127, 111, 79,
- 108, 123, 63, CNU, CNU, CNU, CNU, CNU, CNU, CNU, CNU, CNU, CNU, CNU, CNU, },
+ 108, 123, 63 },
};
static const uint8_t
@@ -337,9 +329,9 @@ static const uint8_t
static const uint8_t
INIT_MVP_IDX[3][NUM_MVP_IDX_CTX] =
{
- { 168, CNU, },
- { 168, CNU, },
- { CNU, CNU, },
+ { 168 },
+ { 168 },
+ { CNU },
};
static const uint8_t
diff -r 237bf6667405 -r b59b1e579f78 source/Lib/TLibCommon/TComMotionInfo.h
--- a/source/Lib/TLibCommon/TComMotionInfo.h Fri Jan 24 14:43:31 2014 -0600
+++ b/source/Lib/TLibCommon/TComMotionInfo.h Mon Jan 27 00:10:56 2014 -0600
@@ -90,7 +90,6 @@ public:
MV* m_mvd;
char* m_refIdx;
uint32_t m_numPartitions;
- AMVPInfo m_cAMVPInfo;
template<typename T>
void setAll(T *p, T const & val, PartSize cuMode, int partAddr, uint32_t depth, int partIdx);
@@ -126,8 +125,6 @@ public:
int getRefIdx(int idx) const { return m_refIdx[idx]; }
- AMVPInfo* getAMVPInfo() { return &m_cAMVPInfo; }
-
// ------------------------------------------------------------------------------------------------------------------
// set
// ------------------------------------------------------------------------------------------------------------------
diff -r 237bf6667405 -r b59b1e579f78 source/Lib/TLibCommon/TComPrediction.cpp
--- a/source/Lib/TLibCommon/TComPrediction.cpp Fri Jan 24 14:43:31 2014 -0600
+++ b/source/Lib/TLibCommon/TComPrediction.cpp Mon Jan 27 00:10:56 2014 -0600
@@ -603,21 +603,4 @@ void TComPrediction::xWeightedAverage(TC
}
}
-// AMVP
-void TComPrediction::getMvPredAMVP(TComDataCU* cu, uint32_t partIdx, uint32_t partAddr, int list, MV& mvPred)
-{
- AMVPInfo* pcAMVPInfo = cu->getCUMvField(list)->getAMVPInfo();
-
- if (pcAMVPInfo->m_num <= 1)
- {
- mvPred = pcAMVPInfo->m_mvCand[0];
-
- cu->setMVPIdxSubParts(0, list, partAddr, partIdx, cu->getDepth(partAddr));
- return;
- }
-
- assert(cu->getMVPIdx(list, partAddr) >= 0);
- mvPred = pcAMVPInfo->m_mvCand[cu->getMVPIdx(list, partAddr)];
-}
-
//! \}
diff -r 237bf6667405 -r b59b1e579f78 source/Lib/TLibCommon/TComPrediction.h
--- a/source/Lib/TLibCommon/TComPrediction.h Fri Jan 24 14:43:31 2014 -0600
+++ b/source/Lib/TLibCommon/TComPrediction.h Mon Jan 27 00:10:56 2014 -0600
@@ -104,9 +104,6 @@ public:
// inter
void motionCompensation(TComDataCU* cu, TComYuv* predYuv, int picList = REF_PIC_LIST_X, int partIdx = -1, bool bLuma = true, bool bChroma = true);
- // motion vector prediction
- void getMvPredAMVP(TComDataCU* cu, uint32_t partIdx, uint32_t partAddr, int picList, MV& mvPred);
-
// Angular Intra
void predIntraLumaAng(uint32_t dirMode, Pel* pred, intptr_t stride, int width);
void predIntraChromaAng(Pel* src, uint32_t dirMode, Pel* pred, intptr_t stride, int width);
diff -r 237bf6667405 -r b59b1e579f78 source/Lib/TLibEncoder/TEncCu.cpp
--- a/source/Lib/TLibEncoder/TEncCu.cpp Fri Jan 24 14:43:31 2014 -0600
+++ b/source/Lib/TLibEncoder/TEncCu.cpp Mon Jan 27 00:10:56 2014 -0600
@@ -1581,16 +1581,6 @@ void TEncCu::xCheckDQP(TComDataCU* cu)
}
}
-void TEncCu::xCopyAMVPInfo(AMVPInfo* src, AMVPInfo* dst)
-{
- // TODO: SJB - there are multiple implementations of this function, it should be an AMVPInfo method
- dst->m_num = src->m_num;
- for (int i = 0; i < src->m_num; i++)
- {
- dst->m_mvCand[i] = src->m_mvCand[i];
- }
-}
-
void TEncCu::xCopyYuv2Pic(TComPic* outPic, uint32_t cuAddr, uint32_t absPartIdx, uint32_t depth, uint32_t srcDepth, TComDataCU* cu, uint32_t lpelx, uint32_t tpely)
{
uint32_t rpelx = lpelx + (g_maxCUWidth >> depth) - 1;
diff -r 237bf6667405 -r b59b1e579f78 source/Lib/TLibEncoder/TEncCu.h
--- a/source/Lib/TLibEncoder/TEncCu.h Fri Jan 24 14:43:31 2014 -0600
+++ b/source/Lib/TLibEncoder/TEncCu.h Mon Jan 27 00:10:56 2014 -0600
@@ -180,7 +180,6 @@ protected:
void xCheckDQP(TComDataCU* cu);
void xCheckIntraPCM(TComDataCU*& outBestCU, TComDataCU*& outTempCU);
- void xCopyAMVPInfo(AMVPInfo* src, AMVPInfo* dst);
void xCopyYuv2Pic(TComPic* outPic, uint32_t cuAddr, uint32_t absPartIdx, uint32_t depth, uint32_t uiSrcDepth, TComDataCU* cu,
uint32_t lpelx, uint32_t tpely);
void xCopyYuv2Tmp(uint32_t uhPartUnitIdx, uint32_t depth);
diff -r 237bf6667405 -r b59b1e579f78 source/Lib/TLibEncoder/TEncSbac.cpp
--- a/source/Lib/TLibEncoder/TEncSbac.cpp Fri Jan 24 14:43:31 2014 -0600
+++ b/source/Lib/TLibEncoder/TEncSbac.cpp Mon Jan 27 00:10:56 2014 -0600
@@ -229,12 +229,11 @@ void TEncSbac::resetEntropy()
initBuffer(&m_contextModels[OFF_QT_ROOT_CBF_CTX], sliceType, qp, (UChar*)INIT_QT_ROOT_CBF, NUM_QT_ROOT_CBF_CTX);
initBuffer(&m_contextModels[OFF_SIG_CG_FLAG_CTX], sliceType, qp, (UChar*)INIT_SIG_CG_FLAG, 2 * NUM_SIG_CG_FLAG_CTX);
initBuffer(&m_contextModels[OFF_SIG_FLAG_CTX], sliceType, qp, (UChar*)INIT_SIG_FLAG, NUM_SIG_FLAG_CTX);
- initBuffer(&m_contextModels[OFF_CTX_LAST_FLAG_X], sliceType, qp, (UChar*)INIT_LAST, 2 * NUM_CTX_LAST_FLAG_XY);
- initBuffer(&m_contextModels[OFF_CTX_LAST_FLAG_Y], sliceType, qp, (UChar*)INIT_LAST, 2 * NUM_CTX_LAST_FLAG_XY);
+ initBuffer(&m_contextModels[OFF_CTX_LAST_FLAG_X], sliceType, qp, (UChar*)INIT_LAST, NUM_CTX_LAST_FLAG_XY);
+ initBuffer(&m_contextModels[OFF_CTX_LAST_FLAG_Y], sliceType, qp, (UChar*)INIT_LAST, NUM_CTX_LAST_FLAG_XY);
initBuffer(&m_contextModels[OFF_ONE_FLAG_CTX], sliceType, qp, (UChar*)INIT_ONE_FLAG, NUM_ONE_FLAG_CTX);
initBuffer(&m_contextModels[OFF_ABS_FLAG_CTX], sliceType, qp, (UChar*)INIT_ABS_FLAG, NUM_ABS_FLAG_CTX);
initBuffer(&m_contextModels[OFF_MVP_IDX_CTX], sliceType, qp, (UChar*)INIT_MVP_IDX, NUM_MVP_IDX_CTX);
- initBuffer(&m_contextModels[OFF_CU_AMP_CTX], sliceType, qp, (UChar*)INIT_CU_AMP_POS, NUM_CU_AMP_CTX);
initBuffer(&m_contextModels[OFF_SAO_MERGE_FLAG_CTX], sliceType, qp, (UChar*)INIT_SAO_MERGE_FLAG, NUM_SAO_MERGE_FLAG_CTX);
initBuffer(&m_contextModels[OFF_SAO_TYPE_IDX_CTX], sliceType, qp, (UChar*)INIT_SAO_TYPE_IDX, NUM_SAO_TYPE_IDX_CTX);
initBuffer(&m_contextModels[OFF_TRANSFORMSKIP_FLAG_CTX], sliceType, qp, (UChar*)INIT_TRANSFORMSKIP_FLAG, 2 * NUM_TRANSFORMSKIP_FLAG_CTX);
@@ -281,12 +280,11 @@ void TEncSbac::determineCabacInitIdx()
curCost += calcCost(&m_contextModels[OFF_QT_ROOT_CBF_CTX], curSliceType, qp, (UChar*)INIT_QT_ROOT_CBF, NUM_QT_ROOT_CBF_CTX);
curCost += calcCost(&m_contextModels[OFF_SIG_CG_FLAG_CTX], curSliceType, qp, (UChar*)INIT_SIG_CG_FLAG, 2 * NUM_SIG_CG_FLAG_CTX);
curCost += calcCost(&m_contextModels[OFF_SIG_FLAG_CTX], curSliceType, qp, (UChar*)INIT_SIG_FLAG, NUM_SIG_FLAG_CTX);
- curCost += calcCost(&m_contextModels[OFF_CTX_LAST_FLAG_X], curSliceType, qp, (UChar*)INIT_LAST, 2 * NUM_CTX_LAST_FLAG_XY);
- curCost += calcCost(&m_contextModels[OFF_CTX_LAST_FLAG_Y], curSliceType, qp, (UChar*)INIT_LAST, 2 * NUM_CTX_LAST_FLAG_XY);
+ curCost += calcCost(&m_contextModels[OFF_CTX_LAST_FLAG_X], curSliceType, qp, (UChar*)INIT_LAST, NUM_CTX_LAST_FLAG_XY);
+ curCost += calcCost(&m_contextModels[OFF_CTX_LAST_FLAG_Y], curSliceType, qp, (UChar*)INIT_LAST, NUM_CTX_LAST_FLAG_XY);
curCost += calcCost(&m_contextModels[OFF_ONE_FLAG_CTX], curSliceType, qp, (UChar*)INIT_ONE_FLAG, NUM_ONE_FLAG_CTX);
curCost += calcCost(&m_contextModels[OFF_ABS_FLAG_CTX], curSliceType, qp, (UChar*)INIT_ABS_FLAG, NUM_ABS_FLAG_CTX);
curCost += calcCost(&m_contextModels[OFF_MVP_IDX_CTX], curSliceType, qp, (UChar*)INIT_MVP_IDX, NUM_MVP_IDX_CTX);
- curCost += calcCost(&m_contextModels[OFF_CU_AMP_CTX], curSliceType, qp, (UChar*)INIT_CU_AMP_POS, NUM_CU_AMP_CTX);
curCost += calcCost(&m_contextModels[OFF_SAO_MERGE_FLAG_CTX], curSliceType, qp, (UChar*)INIT_SAO_MERGE_FLAG, NUM_SAO_MERGE_FLAG_CTX);
curCost += calcCost(&m_contextModels[OFF_SAO_TYPE_IDX_CTX], curSliceType, qp, (UChar*)INIT_SAO_TYPE_IDX, NUM_SAO_TYPE_IDX_CTX);
curCost += calcCost(&m_contextModels[OFF_TRANSFORMSKIP_FLAG_CTX], curSliceType, qp, (UChar*)INIT_TRANSFORMSKIP_FLAG, 2 * NUM_TRANSFORMSKIP_FLAG_CTX);
@@ -1523,7 +1521,7 @@ void TEncSbac::codePartSize(TComDataCU*
m_binIf->encodeBin(1, m_contextModels[OFF_PART_SIZE_CTX + 1]);
if (cu->getSlice()->getSPS()->getAMPAcc(depth))
{
- m_binIf->encodeBin((partSize == SIZE_2NxN) ? 1 : 0, m_contextModels[OFF_CU_AMP_CTX]);
+ m_binIf->encodeBin((partSize == SIZE_2NxN) ? 1 : 0, m_contextModels[OFF_PART_SIZE_CTX + 3]);
if (partSize != SIZE_2NxN)
{
m_binIf->encodeBinEP((partSize == SIZE_2NxnU ? 0 : 1));
@@ -1543,7 +1541,7 @@ void TEncSbac::codePartSize(TComDataCU*
}
if (cu->getSlice()->getSPS()->getAMPAcc(depth))
{
- m_binIf->encodeBin((partSize == SIZE_Nx2N) ? 1 : 0, m_contextModels[OFF_CU_AMP_CTX]);
+ m_binIf->encodeBin((partSize == SIZE_Nx2N) ? 1 : 0, m_contextModels[OFF_PART_SIZE_CTX + 3]);
if (partSize != SIZE_Nx2N)
{
m_binIf->encodeBinEP((partSize == SIZE_nLx2N ? 0 : 1));
@@ -2076,8 +2074,8 @@ void TEncSbac::codeLastSignificantXY(uin
}
uint32_t ctxLast;
- ContextModel *ctxX = &m_contextModels[OFF_CTX_LAST_FLAG_X + (ttype ? NUM_CTX_LAST_FLAG_XY : 0)];
- ContextModel *ctxY = &m_contextModels[OFF_CTX_LAST_FLAG_Y + (ttype ? NUM_CTX_LAST_FLAG_XY : 0)];
+ ContextModel *ctxX = &m_contextModels[OFF_CTX_LAST_FLAG_X + (ttype ? NUM_CTX_LAST_FLAG_XY_LUMA : 0)];
+ ContextModel *ctxY = &m_contextModels[OFF_CTX_LAST_FLAG_Y + (ttype ? NUM_CTX_LAST_FLAG_XY_LUMA : 0)];
uint32_t groupIdxX = g_groupIdx[posx];
uint32_t groupIdxY = g_groupIdx[posy];
@@ -2560,16 +2558,16 @@ void TEncSbac::estSignificantMapBit(estB
for (ctx = 0; ctx < g_groupIdx[width - 1]; ctx++)
{
int ctxOffset = blkSizeOffsetX + (ctx >> shiftX);
- estBitsSbac->lastXBits[ctx] = bitsX + sbacGetEntropyBits(m_contextModels[OFF_CTX_LAST_FLAG_X + ((ttype ? NUM_CTX_LAST_FLAG_XY : 0) + ctxOffset)].m_state, 0);
- bitsX += sbacGetEntropyBits(m_contextModels[OFF_CTX_LAST_FLAG_X + ((ttype ? NUM_CTX_LAST_FLAG_XY : 0) + ctxOffset)].m_state, 1);
+ estBitsSbac->lastXBits[ctx] = bitsX + sbacGetEntropyBits(m_contextModels[OFF_CTX_LAST_FLAG_X + ((ttype ? NUM_CTX_LAST_FLAG_XY_LUMA : 0) + ctxOffset)].m_state, 0);
+ bitsX += sbacGetEntropyBits(m_contextModels[OFF_CTX_LAST_FLAG_X + ((ttype ? NUM_CTX_LAST_FLAG_XY_LUMA : 0) + ctxOffset)].m_state, 1);
}
estBitsSbac->lastXBits[ctx] = bitsX;
for (ctx = 0; ctx < g_groupIdx[height - 1]; ctx++)
{
int ctxOffset = blkSizeOffsetY + (ctx >> shiftY);
- estBitsSbac->lastYBits[ctx] = bitsY + sbacGetEntropyBits(m_contextModels[OFF_CTX_LAST_FLAG_Y + ((ttype ? NUM_CTX_LAST_FLAG_XY : 0) + ctxOffset)].m_state, 0);
- bitsY += sbacGetEntropyBits(m_contextModels[OFF_CTX_LAST_FLAG_Y + ((ttype ? NUM_CTX_LAST_FLAG_XY : 0) + ctxOffset)].m_state, 1);
+ estBitsSbac->lastYBits[ctx] = bitsY + sbacGetEntropyBits(m_contextModels[OFF_CTX_LAST_FLAG_Y + ((ttype ? NUM_CTX_LAST_FLAG_XY_LUMA : 0) + ctxOffset)].m_state, 0);
+ bitsY += sbacGetEntropyBits(m_contextModels[OFF_CTX_LAST_FLAG_Y + ((ttype ? NUM_CTX_LAST_FLAG_XY_LUMA : 0) + ctxOffset)].m_state, 1);
}
estBitsSbac->lastYBits[ctx] = bitsY;
diff -r 237bf6667405 -r b59b1e579f78 source/Lib/TLibEncoder/TEncSearch.cpp
--- a/source/Lib/TLibEncoder/TEncSearch.cpp Fri Jan 24 14:43:31 2014 -0600
+++ b/source/Lib/TLibEncoder/TEncSearch.cpp Mon Jan 27 00:10:56 2014 -0600
@@ -128,7 +128,7 @@ void TEncSearch::init(TEncCfg* cfg, TCom
// default to no adaptive range
for (int dir = 0; dir < 2; dir++)
{
- for (int ref = 0; ref < 33; ref++)
+ for (int ref = 0; ref < MAX_NUM_REF; ref++)
{
m_adaptiveRange[dir][ref] = cfg->param.searchRange;
}
@@ -2492,13 +2492,13 @@ void TEncSearch::predInterSearch(TComDat
More information about the x265-commits
mailing list