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];
}
--
⑨