[x265] [PATCH] modified the QP lambda table(x265_lambda2_tab[]) for CQP

sumalatha at multicorewareinc.com sumalatha at multicorewareinc.com
Tue Sep 3 13:30:18 CEST 2013


# HG changeset patch
# User sumalatha
# Date 1378207798 -19800
# Node ID 0151d371a9efc3af17d23ae8269504b939ceac2c
# Parent  2f9fcf7689181107c11ec400047edef1e714cb67
modified the QP lambda table(x265_lambda2_tab[]) for CQP

diff -r 2f9fcf768918 -r 0151d371a9ef source/Lib/TLibCommon/TComRom.cpp
--- a/source/Lib/TLibCommon/TComRom.cpp	Mon Sep 02 16:16:04 2013 +0530
+++ b/source/Lib/TLibCommon/TComRom.cpp	Tue Sep 03 16:59:58 2013 +0530
@@ -514,13 +514,27 @@
 const Int g_winUnitX[] = { 1, 2, 2, 1 };
 const Int g_winUnitY[] = { 1, 2, 1, 1 };
 
+//for all_I config
+const int x265_lambda2_tab_all_I[MAX_QP + 1] = 
+{
+0.022265625, 0.028052813, 0.035344375, 0.04453125, 0.056105938, 0.070689063, 0.0890625,
+0.112211563, 0.141377813, 0.178125, 0.224423438, 0.282755938, 0.35625, 0.448846875,
+0.565511563, 0.7125, 0.89769375, 1.131023125, 1.425, 1.7953875, 2.262046563, 2.85,
+3.590775, 4.524093125, 5.7, 7.7800125, 10.55621688, 14.25, 19.1508, 25.63652688, 34.2,
+45.48315, 60.32124, 79.8, 105.3293997, 138.7388519, 182.4, 229.8095994, 289.5419519, 364.8,
+459.6191991, 579.0839038, 729.6, 919.2383981, 1158.167808, 1459.2, 1838.476796, 2316.335615,
+2918.4, 3676.953592, 4632.67123 };
+
+
+//for keyINt>1 , bframes- disable
 const int x265_lambda2_tab[MAX_QP + 1] =
-{ 14,  18,   23,   30,   39,   50,   64,   83,
-  106,  137,  176,  226,  291,  374,  480,  617,
-  794,  1020, 1311, 1686, 2165, 2783, 3576, 4594,
-  5904, 7586, 9747, 12524,  16094,  20679,  26571,  34143,
-  43871,  56371,  72432,  93070,  119587, 153661, 197441, 253697,
-  325982, 418861, 538203, 691549, 888585, 1141764, 1467077, 1885077,
-  2422177, 3112305 };
+ {
+0.0333091, 0.0419672, 0.0528748, 0.0666182, 0.0839344, 0.1057507, 0.1332375, 0.1678688, 0.2115014,
+0.266475, 0.3357376, 0.4230028, 0.53295, 0.6714752, 0.8460056, 1.0659, 1.3429493, 1.6920112, 2.1318,
+2.6858997, 3.3840213, 4.2636, 5.3717994, 6.7680426, 8.5272, 10.7435988, 13.5360863, 17.0544,
+21.4871976, 27.0721726, 34.1088, 42.9743952, 54.1443452,  68.2176, 85.9487904, 108.2886904, 136.4352,
+171.8975808, 216.5773797, 272.8704, 343.7951605, 433.1547605, 545.7408, 687.5903221, 866.3095199,
+1091.4816, 1375.180643, 1732.61904, 2182.9632, 2750.361287, 3465.23808, 4365.9264
+};
 
 //! \}
diff -r 2f9fcf768918 -r 0151d371a9ef source/Lib/TLibCommon/TComRom.h
--- a/source/Lib/TLibCommon/TComRom.h	Mon Sep 02 16:16:04 2013 +0530
+++ b/source/Lib/TLibCommon/TComRom.h	Tue Sep 03 16:59:58 2013 +0530
@@ -291,4 +291,5 @@
 extern const Int g_winUnitX[MAX_CHROMA_FORMAT_IDC + 1];
 extern const Int g_winUnitY[MAX_CHROMA_FORMAT_IDC + 1];
 extern const int x265_lambda2_tab[MAX_QP+1];
+extern const int x265_lambda2_tab_all_I[MAX_QP + 1];
 #endif  //__TCOMROM__
diff -r 2f9fcf768918 -r 0151d371a9ef source/Lib/TLibEncoder/TEncTop.cpp
--- a/source/Lib/TLibEncoder/TEncTop.cpp	Mon Sep 02 16:16:04 2013 +0530
+++ b/source/Lib/TLibEncoder/TEncTop.cpp	Tue Sep 03 16:59:58 2013 +0530
@@ -844,7 +844,22 @@
 {
     FrameEncoder *curEncoder = &m_frameEncoder[m_curEncoder];
     Int qp = slice->getSliceQp();
-    Int lambda = x265_lambda2_tab[qp] >> 8;
+    Int lambda = 0;
+	if(param.keyframeMax == 1)
+    {
+        lambda = x265_lambda2_tab_all_I[qp];
+    }
+    else
+    {
+        if(slice->getSliceType() == I_SLICE)
+            {
+                lambda =x265_lambda2_tab[qp] ;
+        }
+        else
+        {
+            lambda = x265_lambda2_tab[qp] *1.9;
+        }
+    }
 
     // for RDO
     // in RdCost there is only one lambda because the luma and chroma bits are not separated,
diff -r 2f9fcf768918 -r 0151d371a9ef source/encoder/frameencoder.cpp
--- a/source/encoder/frameencoder.cpp	Mon Sep 02 16:16:04 2013 +0530
+++ b/source/encoder/frameencoder.cpp	Tue Sep 03 16:59:58 2013 +0530
@@ -325,6 +325,24 @@
         lambda *= m_cfg->getLambdaModifier(0); // temporal layer 0
     }
 
+#if 0//to be reviewed
+    if(m_cfg->param.keyframeMax == 1)
+    {
+        lambda = x265_lambda2_tab_all_I[qp];
+    }
+    else
+    {
+        if(slice->getSliceType() == I_SLICE)
+            {
+                lambda =x265_lambda2_tab[qp] ;
+        }
+        else
+        {
+            lambda = x265_lambda2_tab[qp] *1.9;
+        }
+    }
+#endif
+
     // for RDO
     // in RdCost there is only one lambda because the luma and chroma bits are not separated,
     // instead we weight the distortion of chroma.


More information about the x265-devel mailing list