<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>