shithub: libvpx

Download patch

ref: 1741cc7ab94ebe1b608c1765da75421f6616c49e
parent: 1c24442a07b83c2ec22e9635fe570b5ea42ce784
author: Paul Wilkins <paulwilkins@google.com>
date: Tue Sep 13 11:24:45 EDT 2011

Reverse coding order for segment features:

Code all the features for one segment (grouped together)
then all for the next etc. etc. rather than grouping the
data by feature.

Change-Id: I2a65193b3a70aca78f92e855e35d8969d857b6dd

--- a/vp8/decoder/decodframe.c
+++ b/vp8/decoder/decodframe.c
@@ -939,11 +939,22 @@
 
             vpx_memset(xd->segment_feature_data, 0, sizeof(xd->segment_feature_data));
 
-            /* For each segmentation feature (Quant and loop filter level) */
+#if CONFIG_SEGFEATURES
+            // For each segmentation...
+            for (j = 0; j < MAX_MB_SEGMENTS; j++)
+            {
+                // For each of the segments features...
+                for (i = 0; i < SEG_LVL_MAX; i++)
+                {
+
+#else
+            // For each segmentation feature...
             for (i = 0; i < SEG_LVL_MAX; i++)
             {
+                // For each segmentation...
                 for (j = 0; j < MAX_MB_SEGMENTS; j++)
                 {
+#endif
                     /* Frame level data */
                     if (vp8_read_bit(bc))
                     {
--- a/vp8/encoder/bitstream.c
+++ b/vp8/encoder/bitstream.c
@@ -1846,11 +1846,19 @@
 
             vp8_write_bit(bc, (xd->mb_segement_abs_delta) ? 1 : 0);
 
-            // For each segmentation codable feature
+#if CONFIG_SEGFEATURES
+            // For each segments id...
+            for (j = 0; j < MAX_MB_SEGMENTS; j++)
+            {
+                // For each segmentation codable feature...
+                for (i = 0; i < SEG_LVL_MAX; i++)
+#else
+            // For each segmentation codable feature...
             for (i = 0; i < SEG_LVL_MAX; i++)
             {
-                // For each of the segments
+                // For each of the segments id...
                 for (j = 0; j < MAX_MB_SEGMENTS; j++)
+#endif
                 {
                     Data = xd->segment_feature_data[j][i];
 
@@ -1862,12 +1870,14 @@
                         if (Data < 0)
                         {
                             Data = - Data;
-                            vp8_write_literal(bc, Data, mb_feature_data_bits[i]);
+                            vp8_write_literal(bc, Data,
+                                              mb_feature_data_bits[i]);
                             vp8_write_bit(bc, 1);
                         }
                         else
                         {
-                            vp8_write_literal(bc, Data, mb_feature_data_bits[i]);
+                            vp8_write_literal(bc, Data,
+                                              mb_feature_data_bits[i]);
                             vp8_write_bit(bc, 0);
                         }
                     }
--- a/vp8/encoder/picklpf.c
+++ b/vp8/encoder/picklpf.c
@@ -261,7 +261,7 @@
 
     mbd->segment_feature_data[0][SEG_LVL_ALT_LF] = cpi->segment_feature_data[0][SEG_LVL_ALT_LF];
     mbd->segment_feature_data[1][SEG_LVL_ALT_LF] = cpi->segment_feature_data[1][SEG_LVL_ALT_LF];
-    mbd->segment_feature_data[2][SEG_LVL_ALT_LF] = cpi->segment_feature_data[2[SEG_LVL_ALT_LF]];
+    mbd->segment_feature_data[2][SEG_LVL_ALT_LF] = cpi->segment_feature_data[2][SEG_LVL_ALT_LF];
     mbd->segment_feature_data[3][SEG_LVL_ALT_LF] = cpi->segment_feature_data[3][SEG_LVL_ALT_LF];
 }
 
--