[x265] replace IntraFilterType[][] to IntraFilterFlags[] (aboid *35)

Satoshi Nakagawa nakagawa424 at oki.com
Thu Aug 14 04:58:12 CEST 2014


# HG changeset patch
# User Satoshi Nakagawa <nakagawa424 at oki.com>
# Date 1407984148 -32400
#      Thu Aug 14 11:42:28 2014 +0900
# Node ID a369fcc9c0e43812feb285004c09bf9ea9706456
# Parent  d66e257ace3210d828a399e05eeba1b05abb21af
replace IntraFilterType[][] to IntraFilterFlags[] (aboid *35)

diff -r d66e257ace32 -r a369fcc9c0e4 source/Lib/TLibCommon/TComPattern.cpp
--- a/source/Lib/TLibCommon/TComPattern.cpp	Wed Aug 13 17:29:18 2014 -0700
+++ b/source/Lib/TLibCommon/TComPattern.cpp	Thu Aug 14 11:42:28 2014 +0900
@@ -38,7 +38,7 @@
 #include "frame.h"
 #include "TComPattern.h"
 #include "TComDataCU.h"
-#include "predict.h"
+#include "TComRom.h"
 
 using namespace x265;
 
@@ -68,7 +68,7 @@
 
     fillReferenceSamples(roiOrigin, picStride, adiTemp, intraNeighbors);
 
-    bool bUseFilteredPredictions = (dirMode == ALL_IDX || IntraFilterType[intraNeighbors.log2TrSize - 2][dirMode]);
+    bool bUseFilteredPredictions = (dirMode == ALL_IDX || (intraFilterFlags[dirMode] & tuSize));
 
     if (bUseFilteredPredictions && 8 <= tuSize && tuSize <= 32)
     {
diff -r d66e257ace32 -r a369fcc9c0e4 source/Lib/TLibCommon/TComRom.cpp
--- a/source/Lib/TLibCommon/TComRom.cpp	Wed Aug 13 17:29:18 2014 -0700
+++ b/source/Lib/TLibCommon/TComRom.cpp	Thu Aug 14 11:42:28 2014 +0900
@@ -491,5 +491,15 @@
     106,  110,  114,  118,  122,  126,  130,  135,  139,  143,  147,  152,  156,  161,  165,  170,
     175,  179,  184,  189,  194,  198,  203,  208,  214,  219,  224,  229,  234,  240,  245,  250
 };
+
+/* intraFilterFlags[dir] & trSize */
+const uint8_t intraFilterFlags[35] =
+{
+    0x38, 0x00,
+    0x38, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x00, 0x20, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
+    0x38, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x00, 0x20, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
+    0x38, 
+};
+
 }
 //! \}
diff -r d66e257ace32 -r a369fcc9c0e4 source/Lib/TLibCommon/TComRom.h
--- a/source/Lib/TLibCommon/TComRom.h	Wed Aug 13 17:29:18 2014 -0700
+++ b/source/Lib/TLibCommon/TComRom.h	Thu Aug 14 11:42:28 2014 +0900
@@ -148,6 +148,9 @@
 extern const uint8_t g_lpsTable[64][4];
 extern const uint8_t x265_exp2_lut[64];
 
+// Intra tables
+extern const uint8_t intraFilterFlags[35];
+
 }
 
 #endif  //ifndef X265_TCOMROM_H
diff -r d66e257ace32 -r a369fcc9c0e4 source/common/intrapred.cpp
--- a/source/common/intrapred.cpp	Wed Aug 13 17:29:18 2014 -0700
+++ b/source/common/intrapred.cpp	Thu Aug 14 11:42:28 2014 +0900
@@ -21,7 +21,6 @@
  * For more information, contact us at license @ x265.com.
  *****************************************************************************/
 
-#include "predict.h"
 #include "TLibCommon/TComRom.h"
 #include "primitives.h"
 
@@ -249,11 +248,10 @@
 void all_angs_pred_c(pixel *dest, pixel *above0, pixel *left0, pixel *above1, pixel *left1, int bLuma)
 {
     const int size = 1 << log2Size;
-    const int sizeIdx = log2Size - 2;
     for (int mode = 2; mode <= 34; mode++)
     {
-        pixel *left = (IntraFilterType[sizeIdx][mode] ? left1 : left0);
-        pixel *above = (IntraFilterType[sizeIdx][mode] ? above1 : above0);
+        pixel *left  = (intraFilterFlags[mode] & size ? left1  : left0);
+        pixel *above = (intraFilterFlags[mode] & size ? above1 : above0);
         pixel *out = dest + ((mode - 2) << (log2Size * 2));
 
         intra_pred_ang_c<size>(out, size, left, above, mode, bLuma);
diff -r d66e257ace32 -r a369fcc9c0e4 source/common/x86/asm-primitives.cpp
--- a/source/common/x86/asm-primitives.cpp	Wed Aug 13 17:29:18 2014 -0700
+++ b/source/common/x86/asm-primitives.cpp	Thu Aug 14 11:42:28 2014 +0900
@@ -27,7 +27,7 @@
 #include "x265.h"
 #include "cpu.h"
 #if HIGH_BIT_DEPTH
-#include "predict.h"
+#include "TLibCommon/TComRom.h"
 #endif
 
 extern "C" {
@@ -525,7 +525,7 @@
     SETUP_CHROMA_SS_FUNC_DEF_444(64, 48, cpu); \
     SETUP_CHROMA_SS_FUNC_DEF_444(48, 64, cpu); \
     SETUP_CHROMA_SS_FUNC_DEF_444(64, 16, cpu); \
-    SETUP_CHROMA_SS_FUNC_DEF_444(16, 64, cpu)
+    SETUP_CHROMA_SS_FUNC_DEF_444(16, 64, cpu);
 
 #if HIGH_BIT_DEPTH    // temporary, until all 10bit functions are completed
 #define SETUP_LUMA_FUNC_DEF(W, H, cpu) \
@@ -1139,7 +1139,7 @@
     SETUP_CHROMA_VERT_FUNC_DEF_444(64, 48, cpu); \
     SETUP_CHROMA_VERT_FUNC_DEF_444(48, 64, cpu); \
     SETUP_CHROMA_VERT_FUNC_DEF_444(64, 16, cpu); \
-    SETUP_CHROMA_VERT_FUNC_DEF_444(16, 64, cpu)
+    SETUP_CHROMA_VERT_FUNC_DEF_444(16, 64, cpu);
 
 #define SETUP_CHROMA_HORIZ_FUNC_DEF(W, H, cpu) \
     p.chroma[X265_CSP_I420].filter_hpp[CHROMA_ ## W ## x ## H] = x265_interp_4tap_horiz_pp_ ## W ## x ## H ## cpu; \
@@ -1169,7 +1169,7 @@
     SETUP_CHROMA_HORIZ_FUNC_DEF(32, 24, cpu); \
     SETUP_CHROMA_HORIZ_FUNC_DEF(24, 32, cpu); \
     SETUP_CHROMA_HORIZ_FUNC_DEF(32, 8, cpu); \
-    SETUP_CHROMA_HORIZ_FUNC_DEF(8, 32, cpu)
+    SETUP_CHROMA_HORIZ_FUNC_DEF(8, 32, cpu);
 
 #define SETUP_CHROMA_HORIZ_FUNC_DEF_422(W, H, cpu) \
     p.chroma[X265_CSP_I422].filter_hpp[CHROMA422_ ## W ## x ## H] = x265_interp_4tap_horiz_pp_ ## W ## x ## H ## cpu; \
@@ -1199,7 +1199,7 @@
     SETUP_CHROMA_HORIZ_FUNC_DEF_422(32, 48, cpu); \
     SETUP_CHROMA_HORIZ_FUNC_DEF_422(24, 64, cpu); \
     SETUP_CHROMA_HORIZ_FUNC_DEF_422(32, 16, cpu); \
-    SETUP_CHROMA_HORIZ_FUNC_DEF_422(8, 64, cpu)
+    SETUP_CHROMA_HORIZ_FUNC_DEF_422(8, 64, cpu);
 
 #define SETUP_CHROMA_HORIZ_FUNC_DEF_444(W, H, cpu) \
     p.chroma[X265_CSP_I444].filter_hpp[LUMA_ ## W ## x ## H] = x265_interp_4tap_horiz_pp_ ## W ## x ## H ## cpu; \
@@ -1229,7 +1229,7 @@
     SETUP_CHROMA_HORIZ_FUNC_DEF_444(64, 48, cpu); \
     SETUP_CHROMA_HORIZ_FUNC_DEF_444(48, 64, cpu); \
     SETUP_CHROMA_HORIZ_FUNC_DEF_444(64, 16, cpu); \
-    SETUP_CHROMA_HORIZ_FUNC_DEF_444(16, 64, cpu)
+    SETUP_CHROMA_HORIZ_FUNC_DEF_444(16, 64, cpu);
 
 namespace x265 {
 // private x265 namespace
@@ -1245,8 +1245,8 @@
 
     for (int mode = 2; mode <= 34; mode++)
     {
-        pixel *left = (IntraFilterType[sizeIdx][mode] ? left1 : left0);
-        pixel *above = (IntraFilterType[sizeIdx][mode] ? above1 : above0);
+        pixel *left  = (intraFilterFlags[mode] & size ? left1  : left0);
+        pixel *above = (intraFilterFlags[mode] & size ? above1 : above0);
         pixel *out = dest + ((mode - 2) << (log2Size * 2));
 
         if (mode < 18)
diff -r d66e257ace32 -r a369fcc9c0e4 source/common/x86/pixel-util.h
--- a/source/common/x86/pixel-util.h	Wed Aug 13 17:29:18 2014 -0700
+++ b/source/common/x86/pixel-util.h	Thu Aug 14 11:42:28 2014 +0900
@@ -71,7 +71,7 @@
 #define CHROMA_PIXELSUB_DEF(cpu) \
     SETUP_CHROMA_PIXELSUB_PS_FUNC(4, 4, cpu); \
     SETUP_CHROMA_PIXELSUB_PS_FUNC(8, 8, cpu); \
-    SETUP_CHROMA_PIXELSUB_PS_FUNC(16, 16, cpu);
+    SETUP_CHROMA_PIXELSUB_PS_FUNC(16, 16, cpu); \
     SETUP_CHROMA_PIXELSUB_PS_FUNC(32, 32, cpu);
 
 #define CHROMA_PIXELSUB_DEF_422(cpu) \
diff -r d66e257ace32 -r a369fcc9c0e4 source/encoder/predict.cpp
--- a/source/encoder/predict.cpp	Wed Aug 13 17:29:18 2014 -0700
+++ b/source/encoder/predict.cpp	Thu Aug 14 11:42:28 2014 +0900
@@ -77,10 +77,13 @@
     int tuSize = 1 << log2TrSize;
 
     pixel *refLft, *refAbv;
-    refLft = m_refLeft + tuSize - 1;
-    refAbv = m_refAbove + tuSize - 1;
 
-    if (IntraFilterType[log2TrSize - 2][dirMode])
+    if (!(intraFilterFlags[dirMode] & tuSize))
+    {
+        refLft = m_refLeft + tuSize - 1;
+        refAbv = m_refAbove + tuSize - 1;
+    }
+    else
     {
         refLft = m_refLeftFlt + tuSize - 1;
         refAbv = m_refAboveFlt + tuSize - 1;
@@ -101,7 +104,7 @@
     pixel refAbv[3 * MAX_CU_SIZE];
     pixel refLft[3 * MAX_CU_SIZE];
 
-    bool bUseFilteredPredictions = (chFmt == X265_CSP_I444 && IntraFilterType[log2TrSizeC - 2][dirMode]);
+    bool bUseFilteredPredictions = (chFmt == X265_CSP_I444 && (intraFilterFlags[dirMode] & tuSize));
 
     if (bUseFilteredPredictions)
     {
diff -r d66e257ace32 -r a369fcc9c0e4 source/encoder/predict.h
--- a/source/encoder/predict.h	Wed Aug 13 17:29:18 2014 -0700
+++ b/source/encoder/predict.h	Thu Aug 14 11:42:28 2014 +0900
@@ -34,16 +34,6 @@
 #include "TLibCommon/TComWeightPrediction.h"
 
 namespace x265 {
-/* This table requires IntraFilterType[log2Size - 2][intra mode] */
-static const unsigned char IntraFilterType[5][35] =
-{
-    //  Index:    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
-    /*  4x4  */ { 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 },
-    /*  8x8  */ { 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
-    /* 16x16 */ { 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1 },
-    /* 32x32 */ { 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1 },
-    /* 64x64 */ { 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 },
-};
 
 class Predict : public TComWeightPrediction
 {


More information about the x265-devel mailing list