[x265-commits] [x265] Modify TComRom structure to support multiple color space ...

ashok at multicorewareinc.com ashok at multicorewareinc.com
Sat Feb 15 05:32:09 CET 2014


details:   http://hg.videolan.org/x265/rev/3572d9d04ff7
branches:  
changeset: 6143:3572d9d04ff7
user:      ashok at multicorewareinc.com
date:      Fri Feb 14 13:14:24 2014 +0530
description:
Modify TComRom structure to support multiple color space formats
Subject: [x265] Modify ChromaScale table to support multiple color space formats

details:   http://hg.videolan.org/x265/rev/57156005d32f
branches:  
changeset: 6144:57156005d32f
user:      ashok at multicorewareinc.com
date:      Fri Feb 14 13:46:57 2014 +0530
description:
Modify ChromaScale table to support multiple color space formats
Subject: [x265] Modify TEncSearch structure to support multiple color space formats

details:   http://hg.videolan.org/x265/rev/fb14a98a97e4
branches:  
changeset: 6145:fb14a98a97e4
user:      ashok at multicorewareinc.com
date:      Fri Feb 14 14:14:09 2014 +0530
description:
Modify TEncSearch structure to support multiple color space formats
Subject: [x265] Modify TComPattern structure to support multiple color space formats

details:   http://hg.videolan.org/x265/rev/503e3794098a
branches:  
changeset: 6146:503e3794098a
user:      ashok at multicorewareinc.com
date:      Fri Feb 14 16:41:40 2014 +0530
description:
Modify TComPattern structure to support multiple color space formats
Subject: [x265] Modify TComPrediction structure to support multiple color space formats

details:   http://hg.videolan.org/x265/rev/ad8a991d626e
branches:  
changeset: 6147:ad8a991d626e
user:      ashok at multicorewareinc.com
date:      Fri Feb 14 16:48:02 2014 +0530
description:
Modify TComPrediction structure to support multiple color space formats
Subject: [x265] Modify TEncSbac structure to support multiple color space formats

details:   http://hg.videolan.org/x265/rev/19532171622a
branches:  
changeset: 6148:19532171622a
user:      ashok at multicorewareinc.com
date:      Fri Feb 14 17:26:39 2014 +0530
description:
Modify TEncSbac structure to support multiple color space formats
Subject: [x265] Modify TComDataCU structure to support multiple color space formats

details:   http://hg.videolan.org/x265/rev/1e8fbc073d4b
branches:  
changeset: 6149:1e8fbc073d4b
user:      ashok at multicorewareinc.com
date:      Fri Feb 14 17:29:49 2014 +0530
description:
Modify TComDataCU structure to support multiple color space formats
Subject: [x265] Modify FrameFilter structure to support multiple color space formats

details:   http://hg.videolan.org/x265/rev/6abd54cbff84
branches:  
changeset: 6150:6abd54cbff84
user:      ashok at multicorewareinc.com
date:      Fri Feb 14 17:34:59 2014 +0530
description:
Modify FrameFilter structure to support multiple color space formats
Subject: [x265] Modify TEncEntropy structure to support multiple color space formats

details:   http://hg.videolan.org/x265/rev/a65cb22fcf10
branches:  
changeset: 6151:a65cb22fcf10
user:      ashok at multicorewareinc.com
date:      Fri Feb 14 17:40:02 2014 +0530
description:
Modify TEncEntropy structure to support multiple color space formats
Subject: [x265] Modify asm primitives functions to support multiple color space formats

details:   http://hg.videolan.org/x265/rev/deb0cffa87fa
branches:  
changeset: 6152:deb0cffa87fa
user:      ashok at multicorewareinc.com
date:      Fri Feb 14 19:33:36 2014 +0530
description:
Modify asm primitives functions to support multiple color space formats
Subject: [x265] Modify TComLoopFilter structure to support multiple color space formats

details:   http://hg.videolan.org/x265/rev/c731d494e9ca
branches:  
changeset: 6153:c731d494e9ca
user:      ashok at multicorewareinc.com
date:      Fri Feb 14 19:40:46 2014 +0530
description:
Modify TComLoopFilter structure to support multiple color space formats
Subject: [x265] Backed out changeset: a3a9e0fb1a87

details:   http://hg.videolan.org/x265/rev/98f5088cff19
branches:  
changeset: 6154:98f5088cff19
user:      Deepthi Nandakumar <deepthi at multicorewareinc.com>
date:      Sat Feb 15 07:29:28 2014 +0530
description:
Backed out changeset: a3a9e0fb1a87

Conflicts with the 444 patches. Will resolve merge and
import it in a seperate patch.
Subject: [x265] Merge with 444 changes.

details:   http://hg.videolan.org/x265/rev/8662459da60b
branches:  
changeset: 6155:8662459da60b
user:      Deepthi Nandakumar <deepthi at multicorewareinc.com>
date:      Sat Feb 15 07:30:00 2014 +0530
description:
Merge with 444 changes.
Subject: [x265] ipfilterharness: resolve compile errors with CSP

details:   http://hg.videolan.org/x265/rev/482aa2e636f9
branches:  
changeset: 6156:482aa2e636f9
user:      Deepthi Nandakumar <deepthi at multicorewareinc.com>
date:      Sat Feb 15 07:40:48 2014 +0530
description:
ipfilterharness: resolve compile errors with CSP
Subject: [x265] testbench: disable chroma_p2s.

details:   http://hg.videolan.org/x265/rev/289b4ef4ecee
branches:  
changeset: 6157:289b4ef4ecee
user:      Deepthi Nandakumar <deepthi at multicorewareinc.com>
date:      Sat Feb 15 08:12:30 2014 +0530
description:
testbench: disable chroma_p2s.

diffstat:

 build/msys/make-Makefiles.sh                        |    6 +-
 source/Lib/TLibCommon/CommonDef.h                   |    2 +
 source/Lib/TLibCommon/ContextTables.h               |    9 +
 source/Lib/TLibCommon/TComDataCU.cpp                |   90 ++-
 source/Lib/TLibCommon/TComDataCU.h                  |    1 +
 source/Lib/TLibCommon/TComLoopFilter.cpp            |   14 +-
 source/Lib/TLibCommon/TComPattern.cpp               |   16 +-
 source/Lib/TLibCommon/TComPattern.h                 |    5 +-
 source/Lib/TLibCommon/TComPicYuv.cpp                |    6 +-
 source/Lib/TLibCommon/TComPrediction.cpp            |  192 ++++++--
 source/Lib/TLibCommon/TComPrediction.h              |    6 +-
 source/Lib/TLibCommon/TComRom.cpp                   |  193 ++++++-
 source/Lib/TLibCommon/TComRom.h                     |   12 +-
 source/Lib/TLibCommon/TComSampleAdaptiveOffset.cpp  |   58 +-
 source/Lib/TLibCommon/TComSampleAdaptiveOffset.h    |    5 +-
 source/Lib/TLibCommon/TComSlice.cpp                 |    3 -
 source/Lib/TLibCommon/TComSlice.h                   |   12 +-
 source/Lib/TLibCommon/TComTrQuant.cpp               |  352 ++++++++-------
 source/Lib/TLibCommon/TComTrQuant.h                 |   18 +-
 source/Lib/TLibCommon/TComYuv.h                     |    7 +-
 source/Lib/TLibCommon/TypeDef.h                     |   56 ++-
 source/Lib/TLibEncoder/TEncCfg.h                    |    2 +
 source/Lib/TLibEncoder/TEncEntropy.cpp              |   67 +-
 source/Lib/TLibEncoder/TEncSampleAdaptiveOffset.cpp |   37 +-
 source/Lib/TLibEncoder/TEncSbac.cpp                 |  141 ++---
 source/Lib/TLibEncoder/TEncSearch.cpp               |  454 +++++++++++--------
 source/Lib/TLibEncoder/TEncSearch.h                 |   13 +
 source/common/TShortYUV.h                           |    4 +-
 source/common/common.cpp                            |    4 +-
 source/common/ipfilter.cpp                          |  101 ++-
 source/common/pixel.cpp                             |   84 ++-
 source/common/primitives.h                          |    5 +-
 source/common/version.cpp                           |    2 +-
 source/common/x86/asm-primitives.cpp                |  267 ++++++++---
 source/common/x86/pixeladd8.asm                     |   86 +-
 source/encoder/encoder.cpp                          |   22 +-
 source/encoder/frameencoder.cpp                     |   22 +-
 source/encoder/framefilter.cpp                      |   35 +-
 source/encoder/framefilter.h                        |    2 +
 source/encoder/ratecontrol.cpp                      |   27 +-
 source/encoder/ratecontrol.h                        |    2 +-
 source/input/y4m.cpp                                |    2 +
 source/input/yuv.cpp                                |    1 +
 source/test/ipfilterharness.cpp                     |   12 +-
 44 files changed, 1497 insertions(+), 958 deletions(-)

diffs (truncated from 4637 to 300 lines):

diff -r ed310b17ff66 -r 289b4ef4ecee build/msys/make-Makefiles.sh
--- a/build/msys/make-Makefiles.sh	Fri Feb 14 02:30:52 2014 -0600
+++ b/build/msys/make-Makefiles.sh	Sat Feb 15 08:12:30 2014 +0530
@@ -1,3 +1,3 @@
-#!/bin/sh
-# Run this from within an MSYS bash shell
-cmake -G "MSYS Makefiles" ../../source && cmake-gui ../../source
+#!/bin/sh
+# Run this from within an MSYS bash shell
+cmake -G "MSYS Makefiles" ../../source && cmake-gui ../../source
diff -r ed310b17ff66 -r 289b4ef4ecee source/Lib/TLibCommon/CommonDef.h
--- a/source/Lib/TLibCommon/CommonDef.h	Fri Feb 14 02:30:52 2014 -0600
+++ b/source/Lib/TLibCommon/CommonDef.h	Sat Feb 15 08:12:30 2014 +0530
@@ -88,6 +88,8 @@
 
 #define MLS_GRP_NUM                 64 ///< G644 : Max number of coefficient groups, max(16, 64)
 #define MLS_CG_SIZE                 4 ///< G644 : Coefficient group size of 4x4
+#define MLS_CG_LOG2_WIDTH           2
+#define MLS_CG_LOG2_HEIGHT          2
 
 #define ARL_C_PRECISION             7 ///< G382: 7-bit arithmetic precision
 #define LEVEL_RANGE                 30 ///< G382: max coefficient level in statistics collection
diff -r ed310b17ff66 -r 289b4ef4ecee source/Lib/TLibCommon/ContextTables.h
--- a/source/Lib/TLibCommon/ContextTables.h	Fri Feb 14 02:30:52 2014 -0600
+++ b/source/Lib/TLibCommon/ContextTables.h	Sat Feb 15 08:12:30 2014 +0530
@@ -150,11 +150,20 @@ uint8_t sbacInit(int qp, int initValue);
 #define sbacNext(S, V)              (g_nextState[(S)][(V)])
 #define sbacGetEntropyBits(S, V)    (g_entropyBits[(S) ^ (V)])
 #define sbacGetEntropyBitsTrm(V)    (g_entropyBits[126 ^ (V)])
+#define  CHANNEL_TYPE_LUMA         0
+#define  CHANNEL_TYPE_CHROMA       1
+#define  MAX_NUM_CHANNEL_TYPE      2
 
 // ====================================================================================================================
 // Tables
 // ====================================================================================================================
+#define NEIGHBOURHOOD_00_CONTEXT_1_THRESHOLD_4x4  3
+#define NEIGHBOURHOOD_00_CONTEXT_2_THRESHOLD_4x4  1
 
+static const uint32_t significanceMapContextSetStart         [MAX_NUM_CHANNEL_TYPE][3] = { {0,  9, 21}, {0,  9, 12} };
+static const uint32_t significanceMapContextSetSize          [MAX_NUM_CHANNEL_TYPE][3] = { {9, 12,  6}, {9,  3,  3} };
+static const uint32_t nonDiagonalScan8x8ContextOffset        [MAX_NUM_CHANNEL_TYPE]    = {  6,           0          };
+static const uint32_t notFirstGroupNeighbourhoodContextOffset[MAX_NUM_CHANNEL_TYPE]    = {  3,           0          };
 // initial probability for cu_transquant_bypass flag
 static const uint8_t
     INIT_CU_TRANSQUANT_BYPASS_FLAG[3][NUM_CU_TRANSQUANT_BYPASS_FLAG_CTX] =
diff -r ed310b17ff66 -r 289b4ef4ecee source/Lib/TLibCommon/TComDataCU.cpp
--- a/source/Lib/TLibCommon/TComDataCU.cpp	Fri Feb 14 02:30:52 2014 -0600
+++ b/source/Lib/TLibCommon/TComDataCU.cpp	Sat Feb 15 08:12:30 2014 +0530
@@ -608,8 +608,7 @@ void TComDataCU::copyToPic(UChar uhDepth
     uint32_t tmp2 = m_absIdxInLCU * m_pic->getMinCUWidth() * m_pic->getMinCUHeight();
     memcpy(rpcCU->getCoeffY()     + tmp2, m_trCoeffY,    sizeof(TCoeff) * tmp);
     memcpy(rpcCU->getPCMSampleY() + tmp2, m_iPCMSampleY, sizeof(Pel) * tmp);
-
-    tmp  = ((g_maxCUWidth >> m_hChromaShift) * (g_maxCUHeight >> m_hChromaShift)) >> (uhDepth << 1);
+    tmp  = ((g_maxCUWidth >> m_hChromaShift) * (g_maxCUHeight >> m_vChromaShift)) >> (uhDepth << 1);
     tmp2 = m_absIdxInLCU * (m_pic->getMinCUWidth() >> m_hChromaShift) * (m_pic->getMinCUHeight() >> m_vChromaShift);
     memcpy(rpcCU->getCoeffCb() + tmp2, m_trCoeffCb, sizeof(TCoeff) * tmp);
     memcpy(rpcCU->getCoeffCr() + tmp2, m_trCoeffCr, sizeof(TCoeff) * tmp);
@@ -2868,60 +2867,67 @@ void TComDataCU::xDeriveCenterIdx(uint32
 
 uint32_t TComDataCU::getCoefScanIdx(uint32_t absPartIdx, uint32_t width, bool bIsLuma, bool bIsIntra)
 {
-    uint32_t uiCTXIdx;
     uint32_t scanIdx;
     uint32_t dirMode;
-
     if (!bIsIntra)
     {
-        scanIdx = SCAN_DIAG;
-        return scanIdx;
+        return SCAN_DIAG;
     }
-
-    switch (width)
-    {
-    case  2: uiCTXIdx = 6;
-        break;
-    case  4: uiCTXIdx = 5;
-        break;
-    case  8: uiCTXIdx = 4;
-        break;
-    case 16: uiCTXIdx = 3;
-        break;
-    case 32: uiCTXIdx = 2;
-        break;
-    case 64: uiCTXIdx = 1;
-        break;
-    default: uiCTXIdx = 0;
-        break;
-    }
-
+    //check that MDCS can be used for this TU
+
+    uint32_t height = width; 
     if (bIsLuma)
     {
+        const uint32_t maximumWidth  = MDCS_MAXIMUM_WIDTH;
+        const uint32_t maximumHeight = MDCS_MAXIMUM_HEIGHT;
+
+        if ((width > maximumWidth) || (height > maximumHeight)) return SCAN_DIAG;
+
         dirMode = getLumaIntraDir(absPartIdx);
-        scanIdx = SCAN_DIAG;
-        if (uiCTXIdx > 3 && uiCTXIdx < 6) //if multiple scans supported for transform size
-        {
-            scanIdx = abs((int)dirMode - VER_IDX) < 5 ? SCAN_HOR : (abs((int)dirMode - HOR_IDX) < 5 ? SCAN_VER : SCAN_DIAG);
-        }
     }
     else
     {
-        dirMode = getChromaIntraDir(absPartIdx);
+        const uint32_t maximumWidth  = MDCS_MAXIMUM_WIDTH  >> m_hChromaShift;
+        const uint32_t maximumHeight = MDCS_MAXIMUM_HEIGHT >> m_vChromaShift;
+
+        if ((width > maximumWidth) || (height > maximumHeight)) return SCAN_DIAG;
+
+        dirMode  = getChromaIntraDir(absPartIdx);
         if (dirMode == DM_CHROMA_IDX)
         {
-            // get number of partitions in current CU
-            uint32_t depth = getDepth(absPartIdx);
-            uint32_t numParts = getPic()->getNumPartInCU() >> (2 * depth);
-
-            // get luma mode from upper-left corner of current CU
-            dirMode = getLumaIntraDir((absPartIdx / numParts) * numParts);
+            dirMode = getLumaIntraDir(absPartIdx);
         }
-        scanIdx = SCAN_DIAG;
-        if (uiCTXIdx > 4 && uiCTXIdx < 7) //if multiple scans supported for transform size
-        {
-            scanIdx = abs((int)dirMode - VER_IDX) < 5 ? SCAN_HOR : (abs((int)dirMode - HOR_IDX) < 5 ? SCAN_VER : SCAN_DIAG);
-        }
+    }
+
+    switch (MDCS_MODE)
+    {
+    case MDCS_BOTH_DIRECTIONS:
+        if (abs((int)dirMode - VER_IDX) <= MDCS_ANGLE_LIMIT)
+            scanIdx = SCAN_HOR;
+        else if (abs((int)dirMode - HOR_IDX) <= MDCS_ANGLE_LIMIT)
+            scanIdx = SCAN_VER;
+        else
+            scanIdx = SCAN_DIAG;
+        break;
+
+    case MDCS_VERTICAL_ONLY:
+        if (abs((int)dirMode - HOR_IDX) <= MDCS_ANGLE_LIMIT)
+            scanIdx = SCAN_VER;
+        break;
+
+    case MDCS_HORIZONTAL_ONLY:
+        if (abs((int)dirMode - VER_IDX) <= MDCS_ANGLE_LIMIT)
+            scanIdx = SCAN_HOR;
+        break;
+
+    case MDCS_DISABLED:
+        scanIdx = 0;
+        break;
+
+    default:
+        assert(false);
+        x265_log(NULL, X265_LOG_ERROR, "Unrecognised MDCS mode\n");
+        break;
     }
 
     return scanIdx;
diff -r ed310b17ff66 -r 289b4ef4ecee source/Lib/TLibCommon/TComDataCU.h
--- a/source/Lib/TLibCommon/TComDataCU.h	Fri Feb 14 02:30:52 2014 -0600
+++ b/source/Lib/TLibCommon/TComDataCU.h	Sat Feb 15 08:12:30 2014 +0530
@@ -483,6 +483,7 @@ public:
     int           getHorzChromaShift()  { return m_hChromaShift; }
 
     int           getVertChromaShift()  { return m_vChromaShift; }
+    int           getChromaFormat()     { return m_chromaFormat; }
 };
 
 namespace RasterAddress {
diff -r ed310b17ff66 -r 289b4ef4ecee source/Lib/TLibCommon/TComLoopFilter.cpp
--- a/source/Lib/TLibCommon/TComLoopFilter.cpp	Fri Feb 14 02:30:52 2014 -0600
+++ b/source/Lib/TLibCommon/TComLoopFilter.cpp	Sat Feb 15 08:12:30 2014 +0530
@@ -47,9 +47,7 @@ using namespace x265;
 // ====================================================================================================================
 // Constants
 // ====================================================================================================================
-
-#define   QpUV(iQpY)  (((iQpY) < 0) ? (iQpY) : (((iQpY) > 57) ? ((iQpY) - 6) : g_chromaScale[(iQpY)]))
-
+#define   QpUV(iQpY, chFmt)  (((iQpY) < 0) ? (iQpY) : (((iQpY) > 57) ? ((iQpY) - 6) : g_chromaScale[chFmt][(iQpY)]))
 #define DEFAULT_INTRA_TC_OFFSET 2 ///< Default intra TC offset
 
 // ====================================================================================================================
@@ -226,11 +224,11 @@ void TComLoopFilter::xDeblockCU(TComData
     uint32_t partIdxIncr = DEBLOCK_SMALLEST_BLOCK / pelsInPart ? DEBLOCK_SMALLEST_BLOCK / pelsInPart : 1;
 
     uint32_t sizeInPU = pic->getNumPartInWidth() >> (depth);
-
+    const bool bAlwaysDoChroma = (cu->getChromaFormat() == CHROMA_444);
     for (uint32_t e = 0; e < sizeInPU; e += partIdxIncr)
     {
         xEdgeFilterLuma(cu, absZOrderIdx, depth, dir, e);
-        if ((pelsInPart > DEBLOCK_SMALLEST_BLOCK) || (e % ((DEBLOCK_SMALLEST_BLOCK << 1) / pelsInPart)) == 0)
+        if (bAlwaysDoChroma || (pelsInPart > DEBLOCK_SMALLEST_BLOCK) || (e % ((DEBLOCK_SMALLEST_BLOCK << 1) / pelsInPart)) == 0)
         {
             xEdgeFilterChroma(cu, absZOrderIdx, depth, dir, e);
         }
@@ -642,8 +640,7 @@ void TComLoopFilter::xEdgeFilterChroma(T
     int qp = 0;
     int qpP = 0;
     int qpQ = 0;
-
-    uint32_t  pelsInPartChroma = g_maxCUWidth >> (g_maxCUDepth + 1);
+    uint32_t  pelsInPartChroma = g_maxCUWidth >> (g_maxCUDepth + cu->getHorzChromaShift());
     int   offset, srcStep;
 
     const uint32_t lcuWidthInBaseUnits = cu->getPic()->getNumPartInWidth();
@@ -727,8 +724,7 @@ void TComLoopFilter::xEdgeFilterChroma(T
             {
                 int chromaQPOffset  = (chromaIdx == 0) ? cu->getSlice()->getPPS()->getChromaCbQpOffset() : cu->getSlice()->getPPS()->getChromaCrQpOffset();
                 Pel* piTmpSrcChroma = (chromaIdx == 0) ? tmpSrcCb : tmpSrcCr;
-
-                qp = QpUV(((qpP + qpQ + 1) >> 1) + chromaQPOffset);
+                qp = QpUV((((qpP + qpQ + 1) >> 1) + chromaQPOffset), cu->getChromaFormat());
                 int iBitdepthScale = 1 << (X265_DEPTH - 8);
 
                 int iIndexTC = Clip3(0, MAX_QP + DEFAULT_INTRA_TC_OFFSET, qp + DEFAULT_INTRA_TC_OFFSET * (bs - 1) + (tcOffsetDiv2 << 1));
diff -r ed310b17ff66 -r 289b4ef4ecee source/Lib/TLibCommon/TComPattern.cpp
--- a/source/Lib/TLibCommon/TComPattern.cpp	Fri Feb 14 02:30:52 2014 -0600
+++ b/source/Lib/TLibCommon/TComPattern.cpp	Sat Feb 15 08:12:30 2014 +0530
@@ -204,7 +204,7 @@ void TComPattern::initAdiPattern(TComDat
     }
 }
 
-void TComPattern::initAdiPatternChroma(TComDataCU* cu, uint32_t zOrderIdxInPart, uint32_t partDepth, Pel* adiBuf, int strideOrig, int heightOrig)
+void TComPattern::initAdiPatternChroma(TComDataCU* cu, uint32_t zOrderIdxInPart, uint32_t partDepth, Pel* adiBuf, int strideOrig, int heightOrig, int chromaId)
 {
     Pel*  roiOrigin;
     Pel*  adiTemp;
@@ -246,18 +246,8 @@ void TComPattern::initAdiPatternChroma(T
     {
         return;
     }
-
-    // get Cb pattern
-    roiOrigin = cu->getPic()->getPicYuvRec()->getCbAddr(cu->getAddr(), cu->getZorderIdxInCU() + zOrderIdxInPart);
-    adiTemp   = adiBuf;
-
-    fillReferenceSamples(roiOrigin, adiTemp, bNeighborFlags, numIntraNeighbor, unitSize, numUnitsInCU, totalUnits,
-                         cuWidth, cuHeight, width, height, picStride);
-
-    // get Cr pattern
-    roiOrigin = cu->getPic()->getPicYuvRec()->getCrAddr(cu->getAddr(), cu->getZorderIdxInCU() + zOrderIdxInPart);
-    adiTemp   = adiBuf + ADI_BUF_STRIDE * height;
-
+    roiOrigin = chromaId > 0 ? cu->getPic()->getPicYuvRec()->getCrAddr(cu->getAddr(), cu->getZorderIdxInCU() + zOrderIdxInPart) : cu->getPic()->getPicYuvRec()->getCbAddr(cu->getAddr(), cu->getZorderIdxInCU() + zOrderIdxInPart);
+    adiTemp   = chromaId > 0 ? (adiBuf + 2 * ADI_BUF_STRIDE * height) : adiBuf;
     fillReferenceSamples(roiOrigin, adiTemp, bNeighborFlags, numIntraNeighbor, unitSize, numUnitsInCU, totalUnits,
                          cuWidth, cuHeight, width, height, picStride);
 }
diff -r ed310b17ff66 -r 289b4ef4ecee source/Lib/TLibCommon/TComPattern.h
--- a/source/Lib/TLibCommon/TComPattern.h	Fri Feb 14 02:30:52 2014 -0600
+++ b/source/Lib/TLibCommon/TComPattern.h	Sat Feb 15 08:12:30 2014 +0530
@@ -59,7 +59,7 @@ class TComPattern
 public:
 
     // access functions of ADI buffers
-    static Pel* getAdiChromaBuf(int chromaId, int cuHeight, Pel* adiBuf) { return adiBuf + (chromaId == 0 ? 0 : ADI_BUF_STRIDE * (cuHeight * 2 + 1)); }
+    static Pel* getAdiChromaBuf(int chromaId, int cuHeight, Pel* adiBuf) { return adiBuf + (chromaId == 0 ? 0 : 2 * ADI_BUF_STRIDE * (cuHeight * 2 + 1)); }
 
     // -------------------------------------------------------------------------------------------------------------------
     // initialization functions
@@ -76,8 +76,7 @@ public:
 
     /// set chroma parameters from CU data for accessing ADI data
     void  initAdiPatternChroma(TComDataCU* cu, uint32_t zOrderIdxInPart, uint32_t partDepth,
-                               Pel* adiBuf, int strideOrig, int heightOrig);
-
+                               Pel* adiBuf, int strideOrig, int heightOrig, int chromaId);
 private:
 
     /// padding of unavailable reference samples for intra prediction
diff -r ed310b17ff66 -r 289b4ef4ecee source/Lib/TLibCommon/TComPicYuv.cpp
--- a/source/Lib/TLibCommon/TComPicYuv.cpp	Fri Feb 14 02:30:52 2014 -0600
+++ b/source/Lib/TLibCommon/TComPicYuv.cpp	Sat Feb 15 08:12:30 2014 +0530
@@ -88,9 +88,9 @@ bool TComPicYuv::create(int picWidth, in
     m_strideC = ((m_numCuInWidth * g_maxCUWidth) >> m_hChromaShift) + (m_chromaMarginX * 2);
     int maxHeight = m_numCuInHeight * g_maxCUHeight;
 
-    CHECKED_MALLOC(m_picBufY, Pel, m_stride * (maxHeight + (m_lumaMarginY * 2)));
-    CHECKED_MALLOC(m_picBufU, Pel, m_strideC * ((maxHeight >> m_vChromaShift) + (m_chromaMarginY * 2)));
-    CHECKED_MALLOC(m_picBufV, Pel, m_strideC * ((maxHeight >> m_vChromaShift) + (m_chromaMarginY * 2)));
+    CHECKED_MALLOC(m_picBufY, pixel, m_stride * (maxHeight + (m_lumaMarginY * 2)));
+    CHECKED_MALLOC(m_picBufU, pixel, m_strideC * ((maxHeight >> m_vChromaShift) + (m_chromaMarginY * 2)));
+    CHECKED_MALLOC(m_picBufV, pixel, m_strideC * ((maxHeight >> m_vChromaShift) + (m_chromaMarginY * 2)));
 
     m_picOrgY = m_picBufY + m_lumaMarginY   * getStride()  + m_lumaMarginX;
     m_picOrgU = m_picBufU + m_chromaMarginY * getCStride() + m_chromaMarginX;
diff -r ed310b17ff66 -r 289b4ef4ecee source/Lib/TLibCommon/TComPrediction.cpp
--- a/source/Lib/TLibCommon/TComPrediction.cpp	Fri Feb 14 02:30:52 2014 -0600
+++ b/source/Lib/TLibCommon/TComPrediction.cpp	Sat Feb 15 08:12:30 2014 +0530


More information about the x265-commits mailing list