<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Jan 3, 2014 at 7:12 AM,  <span dir="ltr"><<a href="mailto:ashok@multicorewareinc.com" target="_blank">ashok@multicorewareinc.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"># HG changeset patch<br>
# User <a href="mailto:ashok@multicorewareinc.com">ashok@multicorewareinc.com</a><br>
# Date 1388754730 -19800<br>
#      Fri Jan 03 18:42:10 2014 +0530<br>
# Node ID a4d3275bca23ef2919b2ece1276b3cda25738077<br>
# Parent  c33edcd92866c6cfc3f5593282ef6969e0d9a0af<br>
Modify TComYuv structure and other modificatons to support multiple color space formats<br>
<br>
diff -r c33edcd92866 -r a4d3275bca23 source/Lib/TLibCommon/TComRom.cpp<br>
--- a/source/Lib/TLibCommon/TComRom.cpp Fri Jan 03 18:40:41 2014 +0530<br>
+++ b/source/Lib/TLibCommon/TComRom.cpp Fri Jan 03 18:42:10 2014 +0530<br>
@@ -44,49 +44,179 @@<br>
 //! \ingroup TLibCommon<br>
 //! \{<br>
<br>
+// scanning order table<br>
+uint32_t* g_scanOrder[SCAN_NUMBER_OF_GROUP_TYPES][SCAN_NUMBER_OF_TYPES][ MAX_CU_DEPTH ][ MAX_CU_DEPTH ];<br>
+<br>
+class ScanGenerator<br>
+{<br>
+private:<br>
+    uint32_t m_line, m_column;<br>
+    const uint32_t m_blockWidth, m_blockHeight;<br>
+    const uint32_t m_stride;<br>
+    const COEFF_SCAN_TYPE m_scanType;<br>
+<br>
+public:<br>
+    ScanGenerator(uint32_t blockWidth, uint32_t blockHeight, uint32_t stride, COEFF_SCAN_TYPE scanType)<br>
+        : m_line(0), m_column(0), m_blockWidth(blockWidth), m_blockHeight(blockHeight), m_stride(stride), m_scanType(scanType)<br>
+    { }<br>
+<br>
+    uint32_t GetCurrentX() const { return m_column; }<br>
+    uint32_t GetCurrentY() const { return m_line; }<br>
+<br>
+    uint32_t GetNextIndex(uint32_t blockOffsetX, uint32_t blockOffsetY)<br></blockquote><div><br></div><div>methods must start with a lower case letter</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

+    {<br>
+        int rtn=((m_line + blockOffsetY) * m_stride) + m_column + blockOffsetX;<br>
+<br>
+        //advance line and column to the next position<br>
+        switch (m_scanType)<br>
+        {<br>
+        case SCAN_DIAG:<br>
+            {<br></blockquote><div><br></div><div>these curly braces are unnecessary, you are not declaring any variables</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

+                if ((m_column == (m_blockWidth - 1)) || (m_line == 0)) //if we reach the end of a rank, go diagonally down to the next one<br>
+                {<br>
+                    m_line   += m_column + 1;<br>
+                    m_column  = 0;<br>
+<br>
+                    if (m_line >= m_blockHeight) //if that takes us outside the block, adjust so that we are back on the bottom row<br>
+                    {<br>
+                        m_column += m_line - (m_blockHeight - 1);<br>
+                        m_line    = m_blockHeight - 1;<br>
+                    }<br>
+                }<br>
+                else<br>
+                {<br>
+                    m_column++;<br>
+                    m_line--;<br>
+                }<br>
+            }<br>
+            break;<br>
+<br>
+        case SCAN_HOR:<br>
+            {<br>
+                if (m_column == (m_blockWidth - 1))<br>
+                {<br>
+                    m_line++;<br>
+                    m_column = 0;<br>
+                }<br>
+                else m_column++;<br>
+            }<br>
+            break;<br>
+<br>
+        case SCAN_VER:<br>
+            {<br>
+                if (m_line == (m_blockHeight - 1))<br>
+                {<br>
+                    m_column++;<br>
+                    m_line = 0;<br>
+                }<br>
+                else m_line++;<br>
+            }<br>
+            break;<br>
+<br>
+        default:<br>
+            {<br>
+                std::cerr << "ERROR: Unknown scan type \"" << m_scanType << "\"in ScanGenerator::GetNextIndex" << std::endl;<br></blockquote><div><br></div><div>x265_log(NULL, X265_LOG_ERROR, "...")</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
+                exit(1);<br>
+            }<br>
+            break;<br>
+        }<br>
+        return rtn;<br>
+    }<br>
+};<br>
+<br>
 // initialize ROM variables<br>
 void initROM()<br>
 {<br>
-    if (g_sigLastScan[0][0] == 0)<br>
+    int i, c;<br>
+<br>
+    // g_aucConvertToBit[ x ]: log2(x/4), if x=4 -> 0, x=8 -> 1, x=16 -> 2, ...<br>
+    ::memset(g_convertToBit, -1, sizeof( g_convertToBit));<br>
+    c=0;<br>
+    for ( i=4; i<=MAX_CU_SIZE; i*=2 )<br></blockquote><div><br></div><div>white-space</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
     {<br>
-        int i, c;<br>
+        g_convertToBit[i] = c;<br>
+        c++;<br>
+    }<br>
<br>
-        // g_convertToBit[ x ]: log2(x/4), if x=4 -> 0, x=8 -> 1, x=16 -> 2, ...<br>
-        ::memset(g_convertToBit, -1, sizeof(g_convertToBit));<br>
-        c = 0;<br>
-        for (i = 4; i < MAX_CU_SIZE; i *= 2)<br>
+    // initialise scan orders<br>
+    for (uint32_t log2BlockHeight = 0; log2BlockHeight < MAX_CU_DEPTH; log2BlockHeight++)<br>
+    {<br>
+        for (uint32_t log2BlockWidth = 0; log2BlockWidth < MAX_CU_DEPTH; log2BlockWidth++)<br>
         {<br>
-            g_convertToBit[i] = c;<br>
-            c++;<br>
-        }<br>
+            const uint32_t blockWidth  = 1 << log2BlockWidth;<br>
+            const uint32_t blockHeight = 1 << log2BlockHeight;<br>
+            const uint32_t totalValues = blockWidth * blockHeight;<br>
<br>
-        g_convertToBit[i] = c;<br>
+            //non-grouped scan orders<br>
+            for (uint32_t scanTypeIndex = 0; scanTypeIndex < SCAN_NUMBER_OF_TYPES; scanTypeIndex++)<br>
+            {<br>
+                const COEFF_SCAN_TYPE scanType = COEFF_SCAN_TYPE(scanTypeIndex);<br>
<br>
-        c = 2;<br>
-        for (i = 0; i < MAX_CU_DEPTH; i++)<br>
-        {<br>
-            g_sigLastScan[0][i] = new uint32_t[c * c];<br>
-            g_sigLastScan[1][i] = new uint32_t[c * c];<br>
-            g_sigLastScan[2][i] = new uint32_t[c * c];<br>
-            initSigLastScan(g_sigLastScan[0][i], g_sigLastScan[1][i], g_sigLastScan[2][i], c, c);<br>
+                g_scanOrder[SCAN_UNGROUPED][scanType][log2BlockWidth][log2BlockHeight] = new uint32_t[totalValues];<br>
<br>
-            c <<= 1;<br>
+                ScanGenerator fullBlockScan(blockWidth, blockHeight, blockWidth, scanType);<br>
+<br>
+                for (uint32_t scanPosition = 0; scanPosition < totalValues; scanPosition++)<br>
+                {<br>
+                    g_scanOrder[SCAN_UNGROUPED][scanType][log2BlockWidth][log2BlockHeight][scanPosition] = fullBlockScan.GetNextIndex(0, 0);<br>
+                }<br>
+            }<br>
+<br>
+            //grouped scan orders<br>
+            const uint32_t  groupWidth           = 1           << MLS_CG_LOG2_WIDTH;<br>
+            const uint32_t  groupHeight          = 1           << MLS_CG_LOG2_HEIGHT;<br>
+            const uint32_t  widthInGroups        = blockWidth  >> MLS_CG_LOG2_WIDTH;<br>
+            const uint32_t  heightInGroups       = blockHeight >> MLS_CG_LOG2_HEIGHT;<br>
+<br>
+            const uint32_t  groupSize            = groupWidth    * groupHeight;<br>
+            const uint32_t  totalGroups          = widthInGroups * heightInGroups;<br>
+<br>
+            for (uint32_t scanTypeIndex = 0; scanTypeIndex < SCAN_NUMBER_OF_TYPES; scanTypeIndex++)<br>
+            {<br>
+                const COEFF_SCAN_TYPE scanType = COEFF_SCAN_TYPE(scanTypeIndex);<br>
+<br>
+                g_scanOrder[SCAN_GROUPED_4x4][scanType][log2BlockWidth][log2BlockHeight] = new uint32_t[totalValues];<br>
+<br>
+                ScanGenerator fullBlockScan(widthInGroups, heightInGroups, groupWidth, scanType);<br>
+<br>
+                for (uint32_t groupIndex = 0; groupIndex < totalGroups; groupIndex++)<br>
+                {<br>
+                    const uint32_t groupPositionY  = fullBlockScan.GetCurrentY();<br>
+                    const uint32_t groupPositionX  = fullBlockScan.GetCurrentX();<br>
+                    const uint32_t groupOffsetX    = groupPositionX * groupWidth;<br>
+                    const uint32_t groupOffsetY    = groupPositionY * groupHeight;<br>
+                    const uint32_t groupOffsetScan = groupIndex     * groupSize;<br>
+<br>
+                    ScanGenerator groupScan(groupWidth, groupHeight, blockWidth, scanType);<br>
+<br>
+                    for (uint32_t scanPosition = 0; scanPosition < groupSize; scanPosition++)<br>
+                    {<br>
+                        g_scanOrder[SCAN_GROUPED_4x4][scanType][log2BlockWidth][log2BlockHeight][groupOffsetScan + scanPosition] = groupScan.GetNextIndex(groupOffsetX, groupOffsetY);<br>
+                    }<br>
+<br>
+                    fullBlockScan.GetNextIndex(0,0);<br>
+                }<br>
+            }<br>
+<br>
+            //--------------------------------------------------------------------------------------------------<br>
         }<br>
     }<br>
 }<br>
<br>
 void destroyROM()<br>
 {<br>
-    if (g_sigLastScan[0][0])<br>
+    for (uint32_t groupTypeIndex = 0; groupTypeIndex < SCAN_NUMBER_OF_GROUP_TYPES; groupTypeIndex++)<br>
     {<br>
-        for (int i = 0; i < MAX_CU_DEPTH; i++)<br>
+        for (uint32_t scanOrderIndex = 0; scanOrderIndex < SCAN_NUMBER_OF_TYPES; scanOrderIndex++)<br>
         {<br>
-            delete[] g_sigLastScan[0][i];<br>
-            delete[] g_sigLastScan[1][i];<br>
-            delete[] g_sigLastScan[2][i];<br>
+            for (uint32_t log2BlockWidth = 0; log2BlockWidth < MAX_CU_DEPTH; log2BlockWidth++)<br>
+            {<br>
+                for (uint32_t log2BlockHeight = 0; log2BlockHeight < MAX_CU_DEPTH; log2BlockHeight++)<br>
+                {<br>
+                    delete [] g_scanOrder[groupTypeIndex][scanOrderIndex][log2BlockWidth][log2BlockHeight];<br>
+                }<br>
+            }<br>
         }<br>
-<br>
-        g_sigLastScan[0][0] = NULL;<br>
     }<br>
 }<br>
<br>
@@ -94,15 +224,15 @@<br>
 // Data structure related table & variable<br>
 // ====================================================================================================================<br>
<br>
-int  g_bitDepth = 8;<br>
+int      g_bitDepth    = 8;<br>
 uint32_t g_maxCUWidth  = MAX_CU_SIZE;<br>
 uint32_t g_maxCUHeight = MAX_CU_SIZE;<br>
 uint32_t g_maxCUDepth  = MAX_CU_DEPTH;<br>
 uint32_t g_addCUDepth  = 0;<br>
 uint32_t g_zscanToRaster[MAX_NUM_SPU_W * MAX_NUM_SPU_W] = { 0, };<br>
 uint32_t g_rasterToZscan[MAX_NUM_SPU_W * MAX_NUM_SPU_W] = { 0, };<br>
-uint32_t g_rasterToPelX[MAX_NUM_SPU_W * MAX_NUM_SPU_W] = { 0, };<br>
-uint32_t g_rasterToPelY[MAX_NUM_SPU_W * MAX_NUM_SPU_W] = { 0, };<br>
+uint32_t g_rasterToPelX[MAX_NUM_SPU_W * MAX_NUM_SPU_W]  = { 0, };<br>
+uint32_t g_rasterToPelY[MAX_NUM_SPU_W * MAX_NUM_SPU_W]  = { 0, };<br>
<br>
 uint32_t g_puOffset[8] = { 0, 8, 4, 4, 2, 10, 1, 5 };<br>
<br>
@@ -278,13 +408,12 @@<br>
     {  4, -13, 22, -31, 38, -46, 54, -61, 67, -73, 78, -82, 85, -88, 90, -90, 90, -90, 88, -85, 82, -78, 73, -67, 61, -54, 46, -38, 31, -22, 13, -4 }<br>
 };<br>
<br>
-const UChar g_chromaScale [70] =<br>
+const UChar g_chromaScale[NUM_CHROMA_FORMAT][chromaQPMappingTableSize]=<br>
 {<br>
-    0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,<br>
-    17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 29, 30, 31, 32,<br>
-    33, 33, 34, 34, 35, 35, 36, 36, 37, 37, 38, 39, 40, 41, 42, 43, 44,<br>
-    45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,<br>
-    62, 63<br>
+    { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },<br>
+    { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,29,30,31,32,33,33,34,34,35,35,36,36,37,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51 },<br>
+    { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,32,33,34,35,36,37,37,38,39,40,40,41,42,42,43,44,44,45,45,46,47,48,49,50,51 },<br>
+    { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,51,51,51,51,51,51 }<br>
 };<br>
<br>
 // ====================================================================================================================<br>
@@ -507,7 +636,7 @@<br>
 };<br>
 uint32_t g_scalingListSize[4] = { 16, 64, 256, 1024 };<br>
 uint32_t g_scalingListSizeX[4] = { 4, 8, 16,  32 };<br>
-uint32_t g_scalingListNum[SCALING_LIST_SIZE_NUM] = { 6, 6, 6, 2 };<br>
+uint32_t g_scalingListNum[SCALING_LIST_SIZE_NUM] = { 6, 6, 6, 6 };<br>
 int  g_eTTable[4] = { 0, 3, 1, 2 };<br>
<br>
 const int g_winUnitX[] = { 1, 2, 2, 1 };<br>
diff -r c33edcd92866 -r a4d3275bca23 source/Lib/TLibCommon/TComRom.h<br>
--- a/source/Lib/TLibCommon/TComRom.h   Fri Jan 03 18:40:41 2014 +0530<br>
+++ b/source/Lib/TLibCommon/TComRom.h   Fri Jan 03 18:42:10 2014 +0530<br>
@@ -57,6 +57,7 @@<br>
 #define MAX_CU_DEPTH            6                           // log2(LCUSize)<br>
 #define MAX_CU_SIZE             (1 << (MAX_CU_DEPTH))       // maximum allowable size of CU<br>
 #define MIN_PU_SIZE             4<br>
+#define MIN_TU_SIZE             4<br>
 #define MAX_NUM_SPU_W           (MAX_CU_SIZE / MIN_PU_SIZE) // maximum number of SPU in horizontal line<br>
 #define ADI_BUF_STRIDE          (2 * MAX_CU_SIZE + 1 + 15)  // alignment to 16 bytes<br>
<br>
@@ -69,12 +70,16 @@<br>
 void initSigLastScan(uint32_t* buffD, uint32_t* buffH, uint32_t* buffV, int width, int height);<br>
<br>
 // ====================================================================================================================<br>
+static const int chromaQPMappingTableSize = 58;<br>
+<br>
+extern const UChar  g_chromaScale[NUM_CHROMA_FORMAT][chromaQPMappingTableSize];<br>
 // Data structure related table & variable<br>
 // ====================================================================================================================<br>
<br>
 // flexible conversion from relative to absolute index<br>
 extern uint32_t g_zscanToRaster[MAX_NUM_SPU_W * MAX_NUM_SPU_W];<br>
 extern uint32_t g_rasterToZscan[MAX_NUM_SPU_W * MAX_NUM_SPU_W];<br>
+extern uint32_t*  g_scanOrder[SCAN_NUMBER_OF_GROUP_TYPES][SCAN_NUMBER_OF_TYPES][ MAX_CU_DEPTH ][ MAX_CU_DEPTH ];<br>
<br>
 void initZscanToRaster(int maxDepth, int depth, uint32_t startVal, uint32_t*& curIdx);<br>
 void initRasterToZscan(uint32_t maxCUWidth, uint32_t maxCUHeight, uint32_t maxCUDepth);<br>
@@ -125,12 +130,6 @@<br>
 extern const int16_t g_chromaFilter[8][NTAPS_CHROMA]; ///< Chroma filter taps<br>
<br>
 // ====================================================================================================================<br>
-// Luma QP to Chroma QP mapping<br>
-// ====================================================================================================================<br>
-<br>
-extern const UChar g_chromaScale[70];<br>
-<br>
-// ====================================================================================================================<br>
 // Scanning order & context mapping table<br>
 // ====================================================================================================================<br>
<br>
diff -r c33edcd92866 -r a4d3275bca23 source/Lib/TLibCommon/TComYuv.h<br>
--- a/source/Lib/TLibCommon/TComYuv.h   Fri Jan 03 18:40:41 2014 +0530<br>
+++ b/source/Lib/TLibCommon/TComYuv.h   Fri Jan 03 18:42:10 2014 +0530<br>
@@ -179,9 +179,9 @@<br>
     //  Access starting position of YUV partition unit buffer<br>
     Pel* getLumaAddr(uint32_t partUnitIdx) { return m_bufY + getAddrOffset(partUnitIdx, m_width); }<br>
<br>
-    Pel* getCbAddr(uint32_t partUnitIdx) { return m_bufU + (getAddrOffset(partUnitIdx, m_cwidth) >> 1); }<br>
+    Pel* getCbAddr(uint32_t partUnitIdx) { return m_bufU + (getAddrOffset(partUnitIdx, m_cwidth) >> m_hChromaShift); }<br>
<br>
-    Pel* getCrAddr(uint32_t partUnitIdx) { return m_bufV + (getAddrOffset(partUnitIdx, m_cwidth) >> 1); }<br>
+    Pel* getCrAddr(uint32_t partUnitIdx) { return m_bufV + (getAddrOffset(partUnitIdx, m_cwidth) >> m_hChromaShift); }<br>
<br>
     //  Access starting position of YUV transform unit buffer<br>
     Pel* getLumaAddr(uint32_t iTransUnitIdx, uint32_t iBlkSize) { return m_bufY + getAddrOffset(iTransUnitIdx, iBlkSize, m_width); }<br>
diff -r c33edcd92866 -r a4d3275bca23 source/Lib/TLibCommon/TypeDef.h<br>
--- a/source/Lib/TLibCommon/TypeDef.h   Fri Jan 03 18:40:41 2014 +0530<br>
+++ b/source/Lib/TLibCommon/TypeDef.h   Fri Jan 03 18:42:10 2014 +0530<br>
@@ -70,6 +70,10 @@<br>
 // ====================================================================================================================<br>
 // Enumeration<br>
 // ====================================================================================================================<br>
+#define MDCS_MODE                       MDCS_BOTH_DIRECTIONS        ///< Name taken from definition of MDCSMode enumeration below<br>
+#define MDCS_ANGLE_LIMIT                                  4         ///< (default 4) 0 = Horizontal/vertical only, 1 = Horizontal/vertical +/- 1, 2 = Horizontal/vertical +/- 2 etc...<br>
+#define MDCS_MAXIMUM_WIDTH                                8         ///< (default 8) (measured in pixels) TUs with width greater than this can only use diagonal scan<br>
+#define MDCS_MAXIMUM_HEIGHT                               8         ///< (default 8) (measured in pixels) TUs with height greater than this can only use diagonal scan<br>
<br>
 /// supported slice type<br>
 enum SliceType<br>
@@ -79,6 +83,26 @@<br>
     I_SLICE<br>
 };<br>
<br>
+/// chroma formats (according to semantics of chroma_format_idc)<br>
+enum ChromaFormat<br>
+{<br>
+    CHROMA_400  = 0,<br>
+    CHROMA_420  = 1,<br>
+    CHROMA_422  = 2,<br>
+    CHROMA_444  = 3,<br>
+    NUM_CHROMA_FORMAT = 4<br>
+};<br>
+<br>
+///MDCS modes<br>
+enum MDCSMode<br>
+{<br>
+  MDCS_DISABLED        = 0,<br>
+  MDCS_HORIZONTAL_ONLY = 1,<br>
+  MDCS_VERTICAL_ONLY   = 2,<br>
+  MDCS_BOTH_DIRECTIONS = 3,<br>
+  MDCS_NUMBER_OF_MODES = 4<br>
+};<br>
+<br>
 #define CHROMA_H_SHIFT(x) (x == X265_CSP_I420 || x == X265_CSP_I422)<br>
 #define CHROMA_V_SHIFT(x) (x == X265_CSP_I420)<br>
<br>
@@ -139,9 +163,36 @@<br>
 /// coefficient scanning type used in ACS<br>
 enum COEFF_SCAN_TYPE<br>
 {<br>
-    SCAN_DIAG = 0,       ///< up-right diagonal scan<br>
-    SCAN_HOR,            ///< horizontal first scan<br>
-    SCAN_VER             ///< vertical first scan<br>
+  SCAN_DIAG = 0,        ///< up-right diagonal scan<br>
+  SCAN_HOR  = 1,        ///< horizontal first scan<br>
+  SCAN_VER  = 2,        ///< vertical first scan<br>
+  SCAN_NUMBER_OF_TYPES = 3<br>
+};<br>
+<br>
+enum SignificanceMapContextType<br>
+{<br>
+  CONTEXT_TYPE_4x4    = 0,<br>
+  CONTEXT_TYPE_8x8    = 1,<br>
+  CONTEXT_TYPE_NxN    = 2,<br>
+  CONTEXT_NUMBER_OF_TYPES = 3<br>
+};<br>
+<br>
+enum COEFF_SCAN_GROUP_TYPE<br>
+{<br>
+  SCAN_UNGROUPED   = 0,<br>
+  SCAN_GROUPED_4x4 = 1,<br>
+  SCAN_NUMBER_OF_GROUP_TYPES = 2<br>
+};<br>
+<br>
+//TU settings for entropy encoding<br>
+struct TUEntropyCodingParameters<br>
+{<br>
+  const uint32_t            *scan;<br>
+  const uint32_t            *scanCG;<br>
+        COEFF_SCAN_TYPE      scanType;<br>
+        uint32_t             widthInGroups;<br>
+        uint32_t             heightInGroups;<br>
+        uint32_t             firstSignificanceMapContext;<br>
 };<br></blockquote><div><br></div><div>tabs?</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
 namespace Profile {<br>
diff -r c33edcd92866 -r a4d3275bca23 source/Lib/TLibEncoder/TEncCfg.h<br>
--- a/source/Lib/TLibEncoder/TEncCfg.h  Fri Jan 03 18:40:41 2014 +0530<br>
+++ b/source/Lib/TLibEncoder/TEncCfg.h  Fri Jan 03 18:42:10 2014 +0530<br>
@@ -113,6 +113,8 @@<br>
     int       m_gradualDecodingRefreshInfoEnabled;<br>
     int       m_decodingUnitInfoSEIEnabled;<br>
<br>
+    int       m_csp;<br>
+<br>
     //====== Weighted Prediction ========<br>
<br>
     uint32_t  m_log2ParallelMergeLevelMinus2;                 ///< Parallel merge estimation region<br>
@@ -255,6 +257,8 @@<br>
<br>
     int getVideoFormat() { return m_videoFormat; }<br>
<br>
+    int getColorFormat() { return m_csp; }<br>
+<br>
     bool getVideoFullRangeFlag() { return m_videoFullRangeFlag; }<br>
<br>
     bool getColourDescriptionPresentFlag() { return m_colourDescriptionPresentFlag; }<br>
_______________________________________________<br>
x265-devel mailing list<br>
<a href="mailto:x265-devel@videolan.org">x265-devel@videolan.org</a><br>
<a href="https://mailman.videolan.org/listinfo/x265-devel" target="_blank">https://mailman.videolan.org/listinfo/x265-devel</a><br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br>Steve Borho
</div></div>