[x265] [PATCH] fix bug in scaling list

vignesh at multicorewareinc.com vignesh at multicorewareinc.com
Fri Mar 18 13:16:12 CET 2016


# HG changeset patch
# User Vignesh <vignesh at multicorewareinc.com>
# Date 1458043301 -19800
#      Tue Mar 15 17:31:41 2016 +0530
# Node ID f38191b0a7ddc6b29c79fecc2821e11e8b24e1db
# Parent  4a2f94a592511afabd434fc6cf02a469b6d65091
fix bug in scaling list

diff -r 4a2f94a59251 -r f38191b0a7dd source/common/scalinglist.cpp
--- a/source/common/scalinglist.cpp	Wed Mar 09 14:34:06 2016 +0530
+++ b/source/common/scalinglist.cpp	Tue Mar 15 17:31:41 2016 +0530
@@ -57,7 +57,11 @@
     },
     {
         "INTRA32X32_LUMA",
+        "",
+        "",
         "INTER32X32_LUMA",
+        "",
+        "",
     },
 };
 const char MatrixType_DC[4][12][22] =
@@ -76,7 +80,11 @@
     },
     {
         "INTRA32X32_LUMA_DC",
+        "",
+        "",
         "INTER32X32_LUMA_DC",
+        "",
+        "",
     },
 };
 
@@ -246,15 +254,15 @@
 
     char line[1024];
     int32_t *src = NULL;
+    fseek(fp, 0, 0);
 
     for (int sizeIdc = 0; sizeIdc < NUM_SIZES; sizeIdc++)
     {
         int size = X265_MIN(MAX_MATRIX_COEF_NUM, s_numCoefPerSize[sizeIdc]);
-        for (int listIdc = 0; listIdc < NUM_LISTS; listIdc++)
+        for (int listIdc = 0; listIdc < NUM_LISTS;  listIdc += (sizeIdc == 3) ? 3 : 1)
         {
             src = m_scalingListCoef[sizeIdc][listIdc];
 
-            fseek(fp, 0, 0);
             do
             {
                 char *ret = fgets(line, 1024, fp);
@@ -282,7 +290,6 @@
 
             if (sizeIdc > BLOCK_8x8)
             {
-                fseek(fp, 0, 0);
                 do
                 {
                     char *ret = fgets(line, 1024, fp);
@@ -310,7 +317,7 @@
     fclose(fp);
 
     m_bEnabled = true;
-    m_bDataPresent = !checkDefaultScalingList();
+    m_bDataPresent = true;
 
     return false;
 }
diff -r 4a2f94a59251 -r f38191b0a7dd source/encoder/entropy.cpp
--- a/source/encoder/entropy.cpp	Wed Mar 09 14:34:06 2016 +0530
+++ b/source/encoder/entropy.cpp	Tue Mar 15 17:31:41 2016 +0530
@@ -306,7 +306,7 @@
 {
     for (int sizeId = 0; sizeId < ScalingList::NUM_SIZES; sizeId++)
     {
-        for (int listId = 0; listId < ScalingList::NUM_LISTS; listId++)
+        for (int listId = 0; listId < ScalingList::NUM_LISTS; listId += (sizeId == 3) ? 3 : 1)
         {
             int predList = scalingList.checkPredMode(sizeId, listId);
             WRITE_FLAG(predList < 0, "scaling_list_pred_mode_flag");
@@ -334,12 +334,7 @@
     for (int i = 0; i < coefNum; i++)
     {
         data = src[scan[i]] - nextCoef;
-        nextCoef = src[scan[i]];
-        if (data > 127)
-            data = data - 256;
-        if (data < -128)
-            data = data + 256;
-
+        nextCoef = (nextCoef + data + 256) % 256;
         WRITE_SVLC(data,  "scaling_list_delta_coef");
     }
 }


More information about the x265-devel mailing list