[x265] [PATCH 1 of 2] primitves: 8 bit : PredIntraAng16x16 function table implementation
mandar at multicorewareinc.com
mandar at multicorewareinc.com
Fri Jun 28 14:32:22 CEST 2013
# HG changeset patch
# User Mandar Gurav
# Date 1372400682 25200
# Node ID 124a8b402cd671dfd76bfebcdd0ebad8136b0da1
# Parent 5b42d1c900b42f0e95793825b1e242af29e83180
primitves: 8 bit : PredIntraAng16x16 function table implementation
diff -r 5b42d1c900b4 -r 124a8b402cd6 source/common/vec/intrapred.inc
--- a/source/common/vec/intrapred.inc Wed Jun 26 17:35:15 2013 -0500
+++ b/source/common/vec/intrapred.inc Thu Jun 27 23:24:42 2013 -0700
@@ -1597,6 +1597,7 @@
#endif /* if (!HIGH_BIT_DEPTH) && (INSTRSET >= 5) */
}
+//4x4
#if HIGH_BIT_DEPTH
void xPredIntraAng4x4(int bitDepth, pixel* pDst, int dstStride, int width, int dirMode, pixel *refLeft, pixel *refAbove)
{
@@ -2363,6 +2364,7 @@
#endif /* if HIGH_BIT_DEPTH */
+//8x8
#if HIGH_BIT_DEPTH
#else
#define PREDANG_CALCROW_VER(X) { \
@@ -2968,13 +2970,129 @@
BLND2_4(R4, R8); \
}
-void xPredIntraAng16x16(int bitDepth, pixel* pDst, int dstStride, int width, int dirMode, pixel *refLeft, pixel *refAbove, bool bFilter = true)
+void PredIntraAng16_32(pixel* pDst, int dstStride, pixel *refMain, pixel * /*refSide*/, int /*dirMode*/)
+{
+ Vec8s tmp;
+ __m128i itmp;
+ refMain += 2;
+
+ itmp = _mm_loadu_si128((__m128i const*)refMain++);
+ _mm_storeu_si128((__m128i*)pDst, itmp);
+
+ itmp = _mm_loadu_si128((__m128i const*)refMain++);
+ pDst += dstStride;
+ _mm_storeu_si128((__m128i*)pDst, itmp);
+ itmp = _mm_loadu_si128((__m128i const*)refMain++);
+ pDst += dstStride;
+ _mm_storeu_si128((__m128i*)pDst, itmp);
+ itmp = _mm_loadu_si128((__m128i const*)refMain++);
+ pDst += dstStride;
+ _mm_storeu_si128((__m128i*)pDst, itmp);
+ itmp = _mm_loadu_si128((__m128i const*)refMain++);
+ pDst += dstStride;
+ _mm_storeu_si128((__m128i*)pDst, itmp);
+ itmp = _mm_loadu_si128((__m128i const*)refMain++);
+ pDst += dstStride;
+ _mm_storeu_si128((__m128i*)pDst, itmp);
+ itmp = _mm_loadu_si128((__m128i const*)refMain++);
+ pDst += dstStride;
+ _mm_storeu_si128((__m128i*)pDst, itmp);
+ itmp = _mm_loadu_si128((__m128i const*)refMain++);
+ pDst += dstStride;
+ _mm_storeu_si128((__m128i*)pDst, itmp);
+ itmp = _mm_loadu_si128((__m128i const*)refMain++);
+ pDst += dstStride;
+ _mm_storeu_si128((__m128i*)pDst, itmp);
+ itmp = _mm_loadu_si128((__m128i const*)refMain++);
+ pDst += dstStride;
+ _mm_storeu_si128((__m128i*)pDst, itmp);
+ itmp = _mm_loadu_si128((__m128i const*)refMain++);
+ pDst += dstStride;
+ _mm_storeu_si128((__m128i*)pDst, itmp);
+ itmp = _mm_loadu_si128((__m128i const*)refMain++);
+ pDst += dstStride;
+ _mm_storeu_si128((__m128i*)pDst, itmp);
+ itmp = _mm_loadu_si128((__m128i const*)refMain++);
+ pDst += dstStride;
+ _mm_storeu_si128((__m128i*)pDst, itmp);
+ itmp = _mm_loadu_si128((__m128i const*)refMain++);
+ pDst += dstStride;
+ _mm_storeu_si128((__m128i*)pDst, itmp);
+ itmp = _mm_loadu_si128((__m128i const*)refMain++);
+ pDst += dstStride;
+ _mm_storeu_si128((__m128i*)pDst, itmp);
+ itmp = _mm_loadu_si128((__m128i const*)refMain++);
+ pDst += dstStride;
+ _mm_storeu_si128((__m128i*)pDst, itmp);
+}
+
+void PredIntraAng16_m_32(pixel* pDst, int dstStride, pixel *refMain, pixel *refSide, int /*dirMode*/)
{
- int k;
- int blkSize = width;
-
- // Map the mode index to main prediction direction and angle
- assert(dirMode > 1); //no planar and dc
+ Vec16uc v_refSide;
+ v_refSide.load(refSide);
+ v_refSide = permute16uc<15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0>(v_refSide);
+ pixel refMain0 = refMain[0];
+
+ v_refSide.store(refMain - 15);
+ refMain[0] = refMain0;
+
+ Vec16uc tmp;
+ __m128i itmp;
+ // tmp.load(refMain); //-1,0,1,2
+ // tmp.store(pDst);
+
+ itmp = _mm_loadu_si128((__m128i const*)refMain);
+ _mm_storeu_si128((__m128i*)pDst, itmp);
+
+ itmp = _mm_loadu_si128((__m128i const*)--refMain);
+ pDst += dstStride;
+ _mm_storeu_si128((__m128i*)pDst, itmp);
+ itmp = _mm_loadu_si128((__m128i const*)--refMain);
+ pDst += dstStride;
+ _mm_storeu_si128((__m128i*)pDst, itmp);
+ itmp = _mm_loadu_si128((__m128i const*)--refMain);
+ pDst += dstStride;
+ _mm_storeu_si128((__m128i*)pDst, itmp);
+ itmp = _mm_loadu_si128((__m128i const*)--refMain);
+ pDst += dstStride;
+ _mm_storeu_si128((__m128i*)pDst, itmp);
+ itmp = _mm_loadu_si128((__m128i const*)--refMain);
+ pDst += dstStride;
+ _mm_storeu_si128((__m128i*)pDst, itmp);
+ itmp = _mm_loadu_si128((__m128i const*)--refMain);
+ pDst += dstStride;
+ _mm_storeu_si128((__m128i*)pDst, itmp);
+ itmp = _mm_loadu_si128((__m128i const*)--refMain);
+ pDst += dstStride;
+ _mm_storeu_si128((__m128i*)pDst, itmp);
+ itmp = _mm_loadu_si128((__m128i const*)--refMain);
+ pDst += dstStride;
+ _mm_storeu_si128((__m128i*)pDst, itmp);
+ itmp = _mm_loadu_si128((__m128i const*)--refMain);
+ pDst += dstStride;
+ _mm_storeu_si128((__m128i*)pDst, itmp);
+ itmp = _mm_loadu_si128((__m128i const*)--refMain);
+ pDst += dstStride;
+ _mm_storeu_si128((__m128i*)pDst, itmp);
+ itmp = _mm_loadu_si128((__m128i const*)--refMain);
+ pDst += dstStride;
+ _mm_storeu_si128((__m128i*)pDst, itmp);
+ itmp = _mm_loadu_si128((__m128i const*)--refMain);
+ pDst += dstStride;
+ _mm_storeu_si128((__m128i*)pDst, itmp);
+ itmp = _mm_loadu_si128((__m128i const*)--refMain);
+ pDst += dstStride;
+ _mm_storeu_si128((__m128i*)pDst, itmp);
+ itmp = _mm_loadu_si128((__m128i const*)--refMain);
+ pDst += dstStride;
+ _mm_storeu_si128((__m128i*)pDst, itmp);
+ itmp = _mm_loadu_si128((__m128i const*)--refMain);
+ pDst += dstStride;
+ _mm_storeu_si128((__m128i*)pDst, itmp);
+}
+
+void PredIntraAng16_26(pixel* pDst, int dstStride, pixel *refMain, pixel * /*refSide*/, int dirMode)
+{
bool modeHor = (dirMode < 18);
bool modeVer = !modeHor;
int intraPredAngle = modeVer ? (int)dirMode - VER_IDX : modeHor ? -((int)dirMode - HOR_IDX) : 0;
@@ -2984,10 +3102,113 @@
// Set bitshifts and scale the angle parameter to block size
int angTable[9] = { 0, 2, 5, 9, 13, 17, 21, 26, 32 };
- int invAngTable[9] = { 0, 4096, 1638, 910, 630, 482, 390, 315, 256 }; // (256 * 32) / Angle
- int invAngle = invAngTable[absAng];
absAng = angTable[absAng];
intraPredAngle = signAng * absAng;
+ if (modeHor)
+ {
+ Vec8s row11L, row12L, row11H, row12H;
+ Vec8s v_deltaFract, v_deltaPos, thirty2(32), thirty1(31), v_ipAngle;
+ Vec16uc tmp;
+ Vec16uc R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16;
+ Vec16uc tmp1, tmp2;
+ v_deltaPos = 0;
+ v_ipAngle = intraPredAngle;
+ __m128i itmp, itmp1, itmp2, it1, it2, it3, i16;
+ // MB16;
+ CALC_BLND_8ROWS(R1, R2, R3, R4, R5, R6, R7, R8, 0)
+ CALC_BLND_8ROWS(R9, R10, R11, R12, R13, R14, R15, R16, 8)
+ BLND2_2(R1, R9)
+ BLND2_2(R5, R13)
+ BLND2_2(R3, R11)
+ BLND2_2(R7, R15)
+ BLND2_2(R2, R10)
+ BLND2_2(R6, R14)
+ BLND2_2(R4, R12)
+ BLND2_2(R8, R16)
+ }
+ else
+ {
+ Vec8s row11L, row12L, row11H, row12H;
+ Vec8s v_deltaFract, v_deltaPos, thirty2(32), thirty1(31), v_ipAngle;
+ Vec16uc tmp;
+ Vec8s tmp1, tmp2;
+ v_deltaPos = 0;
+ v_ipAngle = intraPredAngle;
+ __m128i itmp, it1, it2, it3, i16;
+
+ PREDANG_CALCROW_VER(0);
+ PREDANG_CALCROW_VER(1);
+ PREDANG_CALCROW_VER(2);
+ PREDANG_CALCROW_VER(3);
+ PREDANG_CALCROW_VER(4);
+ PREDANG_CALCROW_VER(5);
+ PREDANG_CALCROW_VER(6);
+ PREDANG_CALCROW_VER(7);
+ PREDANG_CALCROW_VER(8);
+ PREDANG_CALCROW_VER(9);
+ PREDANG_CALCROW_VER(10);
+ PREDANG_CALCROW_VER(11);
+ PREDANG_CALCROW_VER(12);
+ PREDANG_CALCROW_VER(13);
+ PREDANG_CALCROW_VER(14);
+ PREDANG_CALCROW_VER(15);
+ }
+}
+
+typedef void (*PredIntraAng16x16_table)(pixel* pDst, int dstStride, pixel *refMain, pixel *refSide, int dirMode);
+PredIntraAng16x16_table PredIntraAng16[] = {
+ /*
+ PredIntraAng16_0 is replaced with PredIntraAng16_26. For PredIntraAng8_0 we are going through default path in the xPredIntraAng8x8 because we cannot afford to pass large number arguments for this function.
+ Path for PredIntraAng16_26, PredIntraAng16_m_26, PredIntraAng16_21, PredIntraAng16_m_21, PredIntraAng16_17, PredIntraAng16_m_17, PredIntraAng16_13, PredIntraAng16_m_13, PredIntraAng16_9, PredIntraAng16_m_9, PredIntraAng16_5, PredIntraAng16_m_5, PredIntraAng16_2, PredIntraAng16_m_2 is same as PredIntraAng16_26.
+ */
+ PredIntraAng16_32,
+ PredIntraAng16_26,
+ PredIntraAng16_26, //Intentionally wrong! It should be "PredIntraAng16_21" here.
+ PredIntraAng16_26, //Intentionally wrong! It should be "PredIntraAng16_17" here.
+ PredIntraAng16_26, //Intentionally wrong! It should be "PredIntraAng16_13" here.
+ PredIntraAng16_26, //Intentionally wrong! It should be "PredIntraAng16_9" here.
+ PredIntraAng16_26, //Intentionally wrong! It should be "PredIntraAng16_5" here.
+ PredIntraAng16_26, //Intentionally wrong! It should be "PredIntraAng16_2" here.
+ PredIntraAng16_26, //Intentionally wrong! It should be "PredIntraAng16_0" here.
+ PredIntraAng16_26, //Intentionally wrong! It should be "PredIntraAng16_m_2" here.
+ PredIntraAng16_26, //Intentionally wrong! It should be "PredIntraAng16_m_5" here.
+ PredIntraAng16_26, //Intentionally wrong! It should be "PredIntraAng16_m_9" here.
+ PredIntraAng16_26, //Intentionally wrong! It should be "PredIntraAng16_m_13" here.
+ PredIntraAng16_26, //Intentionally wrong! It should be "PredIntraAng16_m_17" here.
+ PredIntraAng16_26, //Intentionally wrong! It should be "PredIntraAng16_m_21" here.
+ PredIntraAng16_26, //Intentionally wrong! It should be "PredIntraAng16_m_26" here.
+ PredIntraAng16_m_32,
+ PredIntraAng16_26, //Intentionally wrong! It should be "PredIntraAng16_m_26" here.
+ PredIntraAng16_26, //Intentionally wrong! It should be "PredIntraAng16_m_21" here.
+ PredIntraAng16_26, //Intentionally wrong! It should be "PredIntraAng16_m_17" here.
+ PredIntraAng16_26, //Intentionally wrong! It should be "PredIntraAng16_m_13" here.
+ PredIntraAng16_26, //Intentionally wrong! It should be "PredIntraAng16_m_9" here.
+ PredIntraAng16_26, //Intentionally wrong! It should be "PredIntraAng16_m_5" here.
+ PredIntraAng16_26, //Intentionally wrong! It should be "PredIntraAng16_m_2" here.
+ PredIntraAng16_26, //Intentionally wrong! It should be "PredIntraAng16_0" here.
+ PredIntraAng16_26, //Intentionally wrong! It should be "PredIntraAng16_2" here.
+ PredIntraAng16_26, //Intentionally wrong! It should be "PredIntraAng16_5" here.
+ PredIntraAng16_26, //Intentionally wrong! It should be "PredIntraAng16_9" here.
+ PredIntraAng16_26, //Intentionally wrong! It should be "PredIntraAng16_13" here.
+ PredIntraAng16_26, //Intentionally wrong! It should be "PredIntraAng16_17" here.
+ PredIntraAng16_26, //Intentionally wrong! It should be "PredIntraAng16_21" here.
+ PredIntraAng16_26,
+ PredIntraAng16_32
+};
+
+void xPredIntraAng16x16(int bitDepth, pixel* pDst, int dstStride, int width, int dirMode, pixel *refLeft, pixel *refAbove, bool bFilter = true)
+{
+ int k;
+ int blkSize = width;
+
+ // Map the mode index to main prediction direction and angle
+ assert(dirMode > 1); //no planar and dc
+ static const int mode_to_angle_table[] = {32, 26, 21, 17, 13, 9, 5, 2, 0, -2, -5, -9, -13, -17, -21, -26, -32, -26, -21, -17, -13, -9, -5, -2, 0, 2, 5, 9, 13, 17, 21, 26, 32};
+ static const int mode_to_invAng_table[] = {256, 315, 390, 482, 630, 910, 1638, 4096, 0, 4096, 1638, 910, 630, 482, 390, 315, 256, 315, 390, 482, 630, 910, 1638, 4096, 0, 4096, 1638, 910, 630, 482, 390, 315, 256};
+ int intraPredAngle = mode_to_angle_table[dirMode-2];
+ int invAngle = mode_to_invAng_table[dirMode-2];
+ bool modeHor = (dirMode < 18);
+ bool modeVer = !modeHor;
// Do angular predictions
@@ -3161,195 +3382,9 @@
}
}
}
- else if (intraPredAngle == -32)
- {
- Vec16uc v_refSide;
- v_refSide.load(refSide);
- v_refSide = permute16uc<15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0>(v_refSide);
- pixel refMain0 = refMain[0];
-
- v_refSide.store(refMain - 15);
- refMain[0] = refMain0;
-
- Vec16uc tmp;
- __m128i itmp;
-// tmp.load(refMain); //-1,0,1,2
-// tmp.store(pDst);
-
- itmp = _mm_loadu_si128((__m128i const*)refMain);
- _mm_storeu_si128((__m128i*)pDst, itmp);
-
- itmp = _mm_loadu_si128((__m128i const*)--refMain);
- pDst += dstStride;
- _mm_storeu_si128((__m128i*)pDst, itmp);
- itmp = _mm_loadu_si128((__m128i const*)--refMain);
- pDst += dstStride;
- _mm_storeu_si128((__m128i*)pDst, itmp);
- itmp = _mm_loadu_si128((__m128i const*)--refMain);
- pDst += dstStride;
- _mm_storeu_si128((__m128i*)pDst, itmp);
- itmp = _mm_loadu_si128((__m128i const*)--refMain);
- pDst += dstStride;
- _mm_storeu_si128((__m128i*)pDst, itmp);
- itmp = _mm_loadu_si128((__m128i const*)--refMain);
- pDst += dstStride;
- _mm_storeu_si128((__m128i*)pDst, itmp);
- itmp = _mm_loadu_si128((__m128i const*)--refMain);
- pDst += dstStride;
- _mm_storeu_si128((__m128i*)pDst, itmp);
- itmp = _mm_loadu_si128((__m128i const*)--refMain);
- pDst += dstStride;
- _mm_storeu_si128((__m128i*)pDst, itmp);
- itmp = _mm_loadu_si128((__m128i const*)--refMain);
- pDst += dstStride;
- _mm_storeu_si128((__m128i*)pDst, itmp);
- itmp = _mm_loadu_si128((__m128i const*)--refMain);
- pDst += dstStride;
- _mm_storeu_si128((__m128i*)pDst, itmp);
- itmp = _mm_loadu_si128((__m128i const*)--refMain);
- pDst += dstStride;
- _mm_storeu_si128((__m128i*)pDst, itmp);
- itmp = _mm_loadu_si128((__m128i const*)--refMain);
- pDst += dstStride;
- _mm_storeu_si128((__m128i*)pDst, itmp);
- itmp = _mm_loadu_si128((__m128i const*)--refMain);
- pDst += dstStride;
- _mm_storeu_si128((__m128i*)pDst, itmp);
- itmp = _mm_loadu_si128((__m128i const*)--refMain);
- pDst += dstStride;
- _mm_storeu_si128((__m128i*)pDst, itmp);
- itmp = _mm_loadu_si128((__m128i const*)--refMain);
- pDst += dstStride;
- _mm_storeu_si128((__m128i*)pDst, itmp);
- itmp = _mm_loadu_si128((__m128i const*)--refMain);
- pDst += dstStride;
- _mm_storeu_si128((__m128i*)pDst, itmp);
-
-/*
- tmp.load(--refMain);
- pDst += dstStride;
- tmp.store(pDst);
- ... 14 times more
-*/
- return;
- }
- else if (intraPredAngle == 32)
- {
- Vec8s tmp;
- __m128i itmp;
- refMain += 2;
-
-// tmp.load(refMain++);
-// tmp.store(pDst);
-
- itmp = _mm_loadu_si128((__m128i const*)refMain++);
- _mm_storeu_si128((__m128i*)pDst, itmp);
-
-/*
- tmp.load(refMain++);
- pDst += dstStride;
- tmp.store(pDst);
- ... 14 times more
-*/
- itmp = _mm_loadu_si128((__m128i const*)refMain++);
- pDst += dstStride;
- _mm_storeu_si128((__m128i*)pDst, itmp);
- itmp = _mm_loadu_si128((__m128i const*)refMain++);
- pDst += dstStride;
- _mm_storeu_si128((__m128i*)pDst, itmp);
- itmp = _mm_loadu_si128((__m128i const*)refMain++);
- pDst += dstStride;
- _mm_storeu_si128((__m128i*)pDst, itmp);
- itmp = _mm_loadu_si128((__m128i const*)refMain++);
- pDst += dstStride;
- _mm_storeu_si128((__m128i*)pDst, itmp);
- itmp = _mm_loadu_si128((__m128i const*)refMain++);
- pDst += dstStride;
- _mm_storeu_si128((__m128i*)pDst, itmp);
- itmp = _mm_loadu_si128((__m128i const*)refMain++);
- pDst += dstStride;
- _mm_storeu_si128((__m128i*)pDst, itmp);
- itmp = _mm_loadu_si128((__m128i const*)refMain++);
- pDst += dstStride;
- _mm_storeu_si128((__m128i*)pDst, itmp);
- itmp = _mm_loadu_si128((__m128i const*)refMain++);
- pDst += dstStride;
- _mm_storeu_si128((__m128i*)pDst, itmp);
- itmp = _mm_loadu_si128((__m128i const*)refMain++);
- pDst += dstStride;
- _mm_storeu_si128((__m128i*)pDst, itmp);
- itmp = _mm_loadu_si128((__m128i const*)refMain++);
- pDst += dstStride;
- _mm_storeu_si128((__m128i*)pDst, itmp);
- itmp = _mm_loadu_si128((__m128i const*)refMain++);
- pDst += dstStride;
- _mm_storeu_si128((__m128i*)pDst, itmp);
- itmp = _mm_loadu_si128((__m128i const*)refMain++);
- pDst += dstStride;
- _mm_storeu_si128((__m128i*)pDst, itmp);
- itmp = _mm_loadu_si128((__m128i const*)refMain++);
- pDst += dstStride;
- _mm_storeu_si128((__m128i*)pDst, itmp);
- itmp = _mm_loadu_si128((__m128i const*)refMain++);
- pDst += dstStride;
- _mm_storeu_si128((__m128i*)pDst, itmp);
- itmp = _mm_loadu_si128((__m128i const*)refMain++);
- pDst += dstStride;
- _mm_storeu_si128((__m128i*)pDst, itmp);
-
- return;
- }
else
{
- if (modeHor)
- {
- Vec8s row11L, row12L, row11H, row12H;
- Vec8s v_deltaFract, v_deltaPos, thirty2(32), thirty1(31), v_ipAngle;
- Vec16uc tmp;
- Vec16uc R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16;
- Vec16uc tmp1, tmp2;
- v_deltaPos = 0;
- v_ipAngle = intraPredAngle;
- __m128i itmp, itmp1, itmp2, it1, it2, it3, i16;
-// MB16;
- CALC_BLND_8ROWS(R1, R2, R3, R4, R5, R6, R7, R8, 0)
- CALC_BLND_8ROWS(R9, R10, R11, R12, R13, R14, R15, R16, 8)
- BLND2_2(R1, R9)
- BLND2_2(R5, R13)
- BLND2_2(R3, R11)
- BLND2_2(R7, R15)
- BLND2_2(R2, R10)
- BLND2_2(R6, R14)
- BLND2_2(R4, R12)
- BLND2_2(R8, R16)
- }
- else
- {
- Vec8s row11L, row12L, row11H, row12H;
- Vec8s v_deltaFract, v_deltaPos, thirty2(32), thirty1(31), v_ipAngle;
- Vec16uc tmp;
- Vec8s tmp1, tmp2;
- v_deltaPos = 0;
- v_ipAngle = intraPredAngle;
- __m128i itmp, it1, it2, it3, i16;
-
- PREDANG_CALCROW_VER(0);
- PREDANG_CALCROW_VER(1);
- PREDANG_CALCROW_VER(2);
- PREDANG_CALCROW_VER(3);
- PREDANG_CALCROW_VER(4);
- PREDANG_CALCROW_VER(5);
- PREDANG_CALCROW_VER(6);
- PREDANG_CALCROW_VER(7);
- PREDANG_CALCROW_VER(8);
- PREDANG_CALCROW_VER(9);
- PREDANG_CALCROW_VER(10);
- PREDANG_CALCROW_VER(11);
- PREDANG_CALCROW_VER(12);
- PREDANG_CALCROW_VER(13);
- PREDANG_CALCROW_VER(14);
- PREDANG_CALCROW_VER(15);
- }
+ PredIntraAng16[dirMode-2](pDst, dstStride, refMain, refSide, dirMode);
}
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: xhevc_27June-1.patch
Type: text/x-patch
Size: 19663 bytes
Desc: not available
URL: <http://mailman.videolan.org/pipermail/x265-devel/attachments/20130628/0a54aaf0/attachment-0001.bin>
More information about the x265-devel
mailing list