[Spice-devel] [spice-common v3 11/12] quic: Use channel->correlate_row in macros

Christophe Fergeau cfergeau at redhat.com
Thu Aug 3 14:24:37 UTC 2017


This avoids the need for a local variable with the right name (which
was decorrelate_drow in some cases in quic_tmpl.c...)

Signed-off-by: Christophe Fergeau <cfergeau at redhat.com>
---
 common/quic_tmpl.c | 100 ++++++++++++++++++++++++++---------------------------
 1 file changed, 49 insertions(+), 51 deletions(-)

diff --git a/common/quic_tmpl.c b/common/quic_tmpl.c
index e10c940..a0ebabf 100644
--- a/common/quic_tmpl.c
+++ b/common/quic_tmpl.c
@@ -81,22 +81,25 @@ static inline void FNAME(correlate)(const PIXEL *prev, PIXEL *curr, const BYTE c
     curr->a = (family.xlatL2U[correlate] + (int)((_PIXEL_A + _PIXEL_B) >> 1)) & bpc_mask;
 }
 
-#define COMPRESS_ONE_ROW0_0(channel)                                                      \
-    correlate_row[0] = family.xlatU2L[cur_row->a];                                        \
-    golomb_coding(correlate_row[0], find_bucket(channel, correlate_row[-1])->bestcode,    \
-                  &codeword, &codewordlen);                                               \
+#define COMPRESS_ONE_ROW0_0(channel)                                 \
+    channel->correlate_row[0] = family.xlatU2L[cur_row->a];          \
+    golomb_coding(channel->correlate_row[0],                         \
+                  find_bucket(channel,                               \
+                              channel->correlate_row[-1])->bestcode, \
+                  &codeword, &codewordlen);                          \
     encode(encoder, codeword, codewordlen);
 
-#define COMPRESS_ONE_ROW0(channel, index)                                            \
-    correlate_row[index] = FNAME(decorrelate_0)(&cur_row[index], bpc_mask);          \
-    golomb_coding(correlate_row[index], find_bucket(channel,                         \
-                  correlate_row[index-1])->bestcode,                                 \
-                  &codeword, &codewordlen);                                          \
+#define COMPRESS_ONE_ROW0(channel, index)                                               \
+    channel->correlate_row[index] = FNAME(decorrelate_0)(&cur_row[index], bpc_mask);    \
+    golomb_coding(channel->correlate_row[index],                                        \
+                  find_bucket(channel,                                                  \
+                              channel->correlate_row[index - 1])->bestcode,             \
+                  &codeword, &codewordlen);                                             \
     encode(encoder, codeword, codewordlen);
 
-#define UPDATE_MODEL(index)                                                          \
-    update_model(state, find_bucket(channel, correlate_row[index - 1]),              \
-                 correlate_row[index]);
+#define UPDATE_MODEL(index)                                                             \
+    update_model(state, find_bucket(channel, channel->correlate_row[index - 1]),        \
+                 channel->correlate_row[index]);
 
 static void FNAME(compress_row0_seg)(Encoder *encoder, Channel *channel, int i,
                                      const PIXEL * const cur_row,
@@ -106,7 +109,6 @@ static void FNAME(compress_row0_seg)(Encoder *encoder, Channel *channel, int i,
                                      const unsigned int bpc_mask)
 {
     CommonState *state = &channel->state;
-    BYTE * const correlate_row = channel->correlate_row;
     int stopidx;
 
     spice_assert(end - i > 0);
@@ -183,18 +185,18 @@ static void FNAME(compress_row0)(Encoder *encoder, Channel *channel, const PIXEL
 }
 
 #define COMPRESS_ONE_0(channel) \
-    correlate_row[0] = family.xlatU2L[(unsigned)((int)GET_a(cur_row) -                  \
-                                                    (int)GET_a(prev_row) ) & bpc_mask]; \
-        golomb_coding(correlate_row[0],                                                 \
-                      find_bucket(channel, correlate_row[-1])->bestcode,                \
-                      &codeword, &codewordlen);                                         \
-        encode(encoder, codeword, codewordlen);
-
-#define COMPRESS_ONE(channel, index)                                                            \
-     correlate_row[index] = FNAME(decorrelate)(&prev_row[index], &cur_row[index], bpc_mask);    \
-     golomb_coding(correlate_row[index],                                                        \
-                  find_bucket(channel, correlate_row[index - 1])->bestcode,                     \
+    channel->correlate_row[0] = family.xlatU2L[(unsigned)((int)GET_a(cur_row) -                 \
+                                                          (int)GET_a(prev_row) ) & bpc_mask];   \
+    golomb_coding(channel->correlate_row[0],                                                    \
+                  find_bucket(channel, channel->correlate_row[-1])->bestcode,                   \
                   &codeword, &codewordlen);                                                     \
+    encode(encoder, codeword, codewordlen);
+
+#define COMPRESS_ONE(channel, index)                                                            \
+     channel->correlate_row[index] = FNAME(decorrelate)(&prev_row[index], &cur_row[index], bpc_mask);   \
+     golomb_coding(channel->correlate_row[index],                                                       \
+                  find_bucket(channel, channel->correlate_row[index - 1])->bestcode,                    \
+                  &codeword, &codewordlen);                                                             \
      encode(encoder, codeword, codewordlen);
 
 static void FNAME(compress_row_seg)(Encoder *encoder, Channel *channel, int i,
@@ -206,7 +208,6 @@ static void FNAME(compress_row_seg)(Encoder *encoder, Channel *channel, int i,
                                     const unsigned int bpc_mask)
 {
     CommonState *state = &channel->state;
-    BYTE * const correlate_row = channel->correlate_row;
     int stopidx;
     int run_index = 0;
     int run_size;
@@ -222,8 +223,8 @@ static void FNAME(compress_row_seg)(Encoder *encoder, Channel *channel, int i,
             state->waitcnt--;
         } else {
             state->waitcnt = (tabrand(&state->tabrand_seed) & waitmask);
-            update_model(state, find_bucket(channel, correlate_row[-1]),
-                         correlate_row[0]);
+            update_model(state, find_bucket(channel, channel->correlate_row[-1]),
+                         channel->correlate_row[0]);
         }
         stopidx = ++i + state->waitcnt;
     } else {
@@ -307,19 +308,19 @@ static void FNAME(compress_row)(Encoder *encoder, Channel *channel,
 
 #define UNCOMPRESS_PIX_START(row) do { } while (0)
 
-#define UNCOMPRESS_ONE_ROW0_0(channel)                                                          \
-    correlate_row[0] = (BYTE)golomb_decoding(find_bucket(channel,                               \
-                                                         correlate_row[-1])->bestcode,          \
-                                                         encoder->io_word, &codewordlen);       \
-    SET_a(&cur_row[0], (BYTE)family.xlatL2U[correlate_row[0]]);                                 \
+#define UNCOMPRESS_ONE_ROW0_0(channel)                                                                  \
+    channel->correlate_row[0] = (BYTE)golomb_decoding(find_bucket(channel,                              \
+                                                                  channel->correlate_row[-1])->bestcode,\
+                                                      encoder->io_word, &codewordlen);                  \
+    SET_a(&cur_row[0], (BYTE)family.xlatL2U[channel->correlate_row[0]]);                                \
     decode_eatbits(encoder, codewordlen);
 
-#define UNCOMPRESS_ONE_ROW0(channel)                                            \
-    correlate_row[i] = (BYTE)golomb_decoding(find_bucket(channel,               \
-                                             correlate_row[i - 1])->bestcode,   \
-                                             encoder->io_word,                  \
-                                             &codewordlen);                     \
-    FNAME(correlate_0)(&cur_row[i], correlate_row[i], bpc_mask);                \
+#define UNCOMPRESS_ONE_ROW0(channel)                                                                            \
+    channel->correlate_row[i] = (BYTE)golomb_decoding(find_bucket(channel,                                      \
+                                                                  channel->correlate_row[i - 1])->bestcode,     \
+                                                                  encoder->io_word,                             \
+                                                                  &codewordlen);                                \
+    FNAME(correlate_0)(&cur_row[i], channel->correlate_row[i], bpc_mask);                                                \
     decode_eatbits(encoder, codewordlen);
 
 static void FNAME(uncompress_row0_seg)(Encoder *encoder, Channel *channel, int i,
@@ -330,7 +331,6 @@ static void FNAME(uncompress_row0_seg)(Encoder *encoder, Channel *channel, int i
                                        const unsigned int bpc_mask)
 {
     CommonState *state = &channel->state;
-    BYTE * const correlate_row = channel->correlate_row;
     int stopidx;
 
     spice_assert(end - i > 0);
@@ -412,19 +412,18 @@ static void FNAME(uncompress_row0)(Encoder *encoder, Channel *channel,
 }
 
 #define UNCOMPRESS_ONE_0(channel) \
-    correlate_row[0] = (BYTE)golomb_decoding(find_bucket(channel,                               \
-                                                         correlate_row[-1])->bestcode,          \
-                                                         encoder->io_word, &codewordlen);       \
-    SET_a(&cur_row[0], (family.xlatL2U[correlate_row[0]] +                                      \
-                  GET_a(prev_row)) & bpc_mask);                                                 \
+    channel->correlate_row[0] = (BYTE)golomb_decoding(find_bucket(channel,                              \
+                                                                  channel->correlate_row[-1])->bestcode,\
+                                                      encoder->io_word, &codewordlen);                  \
+    SET_a(&cur_row[0], (family.xlatL2U[channel->correlate_row[0]] +                                     \
+                  GET_a(prev_row)) & bpc_mask);                                                         \
     decode_eatbits(encoder, codewordlen);
 
-#define UNCOMPRESS_ONE(channel)                                                                 \
-    correlate_row[i] = (BYTE)golomb_decoding(find_bucket(channel,                               \
-                                                         correlate_row[i - 1])->bestcode,       \
-                                                         encoder->io_word,                      \
-                                                         &codewordlen);                         \
-    FNAME(correlate)(&prev_row[i], &cur_row[i], correlate_row[i], bpc_mask);                    \
+#define UNCOMPRESS_ONE(channel)                                                                                 \
+    channel->correlate_row[i] = (BYTE)golomb_decoding(find_bucket(channel,                                      \
+                                                                  channel->correlate_row[i - 1])->bestcode,     \
+                                                      encoder->io_word, &codewordlen);                          \
+    FNAME(correlate)(&prev_row[i], &cur_row[i], channel->correlate_row[i], bpc_mask);                           \
     decode_eatbits(encoder, codewordlen);
 
 static void FNAME(uncompress_row_seg)(Encoder *encoder, Channel *channel,
@@ -436,7 +435,6 @@ static void FNAME(uncompress_row_seg)(Encoder *encoder, Channel *channel,
                                       const unsigned int bpc_mask)
 {
     CommonState *state = &channel->state;
-    BYTE * const correlate_row = channel->correlate_row;
     const unsigned int waitmask = bppmask[state->wmidx];
     int stopidx;
     int run_index = 0;
-- 
2.13.3



More information about the Spice-devel mailing list