[Spice-devel] [PATCH spice-common 4/6] quic: More template unification, unify macros

Frediano Ziglio fziglio at redhat.com
Thu Jun 28 13:23:24 UTC 2018


Start defining the macro the same for both templates.
Unify function initial declaration using DECLARE_CHANNEL_VARIABLES
and DECLARE_STATE_VARIABLES macros.

Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
---
 common/quic_rgb_tmpl.c | 160 ++++++++++++++++++----------------
 common/quic_tmpl.c     | 192 ++++++++++++++++++++++++++++++++---------
 2 files changed, 234 insertions(+), 118 deletions(-)

diff --git a/common/quic_rgb_tmpl.c b/common/quic_rgb_tmpl.c
index 0cdf010..ca735c1 100644
--- a/common/quic_rgb_tmpl.c
+++ b/common/quic_rgb_tmpl.c
@@ -19,18 +19,61 @@
 #include <config.h>
 #endif
 
+#define COMPRESS_IMP
+
+#if defined(ONE_BYTE) || defined(FOUR_BYTE)
+#  define CHANNEL_ARG_ Channel *channel_a,
+#  define CHANNEL_ channel_a,
+#  define UNCOMPRESS_PIX_START(row) do { } while (0)
+#  define SET_a(pix, val) ((pix)->a = val)
+#  define GET_a(pix) ((pix)->a)
+#  define SAME_PIXEL(p1, p2) (GET_a(p1) == GET_a(p2))
+#  define DECLARE_STATE_VARIABLES \
+    CommonState *state = &channel_a->state
+#  define DECLARE_CHANNEL_VARIABLES \
+    BYTE * const correlate_row_a = channel_a->correlate_row
+#  define APPLY_ALL_COMP(macro, ...) \
+    macro(a, ## __VA_ARGS__)
+#else
+#  define CHANNEL_ARG_
+#  define CHANNEL_
+#  define SAME_PIXEL(p1, p2)                               \
+    (GET_r(p1) == GET_r(p2) && GET_g(p1) == GET_g(p2) &&   \
+     GET_b(p1) == GET_b(p2))
+#  define DECLARE_STATE_VARIABLES \
+    CommonState *state = &encoder->rgb_state
+#  define DECLARE_CHANNEL_VARIABLES \
+    Channel * const channel_r = encoder->channels; \
+    Channel * const channel_g = channel_r + 1; \
+    Channel * const channel_b = channel_g + 1; \
+    BYTE * const correlate_row_r = channel_r->correlate_row; \
+    BYTE * const correlate_row_g = channel_g->correlate_row; \
+    BYTE * const correlate_row_b = channel_b->correlate_row
+#  define APPLY_ALL_COMP(macro, ...) \
+    macro(r, ## __VA_ARGS__); \
+    macro(g, ## __VA_ARGS__); \
+    macro(b, ## __VA_ARGS__)
+#endif
+
+#ifdef ONE_BYTE
+#undef ONE_BYTE
+#define FNAME(name) quic_one_##name
+#define PIXEL one_byte_t
+#define BPC 8
+#endif
+
+#ifdef FOUR_BYTE
+#undef FOUR_BYTE
+#define FNAME(name) quic_four_##name
+#define PIXEL four_bytes_t
+#define BPC 8
+#endif
+
 #ifdef QUIC_RGB32
 #undef QUIC_RGB32
 #define PIXEL rgb32_pixel_t
 #define FNAME(name) quic_rgb32_##name
-#define golomb_coding golomb_coding_8bpc
-#define golomb_decoding golomb_decoding_8bpc
-#define update_model update_model_8bpc
-#define find_bucket find_bucket_8bpc
-#define family family_8bpc
 #define BPC 8
-#define BPC_MASK 0xffU
-#define COMPRESS_IMP
 #define SET_r(pix, val) ((pix)->r = val)
 #define GET_r(pix) ((pix)->r)
 #define SET_g(pix, val) ((pix)->g = val)
@@ -44,14 +87,7 @@
 #undef QUIC_RGB24
 #define PIXEL rgb24_pixel_t
 #define FNAME(name) quic_rgb24_##name
-#define golomb_coding golomb_coding_8bpc
-#define golomb_decoding golomb_decoding_8bpc
-#define update_model update_model_8bpc
-#define find_bucket find_bucket_8bpc
-#define family family_8bpc
 #define BPC 8
-#define BPC_MASK 0xffU
-#define COMPRESS_IMP
 #define SET_r(pix, val) ((pix)->r = val)
 #define GET_r(pix) ((pix)->r)
 #define SET_g(pix, val) ((pix)->g = val)
@@ -65,14 +101,7 @@
 #undef QUIC_RGB16
 #define PIXEL rgb16_pixel_t
 #define FNAME(name) quic_rgb16_##name
-#define golomb_coding golomb_coding_5bpc
-#define golomb_decoding golomb_decoding_5bpc
-#define update_model update_model_5bpc
-#define find_bucket find_bucket_5bpc
-#define family family_5bpc
 #define BPC 5
-#define BPC_MASK 0x1fU
-#define COMPRESS_IMP
 #define SET_r(pix, val) (*(pix) = (*(pix) & ~(0x1f << 10)) | ((val) << 10))
 #define GET_r(pix) ((*(pix) >> 10) & 0x1f)
 #define SET_g(pix, val) (*(pix) = (*(pix) & ~(0x1f << 5)) | ((val) << 5))
@@ -86,14 +115,8 @@
 #undef QUIC_RGB16_TO_32
 #define PIXEL rgb32_pixel_t
 #define FNAME(name) quic_rgb16_to_32_##name
-#define golomb_coding golomb_coding_5bpc
-#define golomb_decoding golomb_decoding_5bpc
-#define update_model update_model_5bpc
-#define find_bucket find_bucket_5bpc
-#define family family_5bpc
 #define BPC 5
-#define BPC_MASK 0x1fU
-
+#undef COMPRESS_IMP
 #define SET_r(pix, val) ((pix)->r = ((val) << 3) | (((val) & 0x1f) >> 2))
 #define GET_r(pix) ((pix)->r >> 3)
 #define SET_g(pix, val) ((pix)->g = ((val) << 3) | (((val) & 0x1f) >> 2))
@@ -103,13 +126,23 @@
 #define UNCOMPRESS_PIX_START(pix) ((pix)->pad = 0)
 #endif
 
-#define CHANNEL_ARG_
-#define CHANNEL_
-
-#define SAME_PIXEL(p1, p2)                                 \
-    (GET_r(p1) == GET_r(p2) && GET_g(p1) == GET_g(p2) &&   \
-     GET_b(p1) == GET_b(p2))
-
+#if BPC == 5
+#  define golomb_coding golomb_coding_5bpc
+#  define golomb_decoding golomb_decoding_5bpc
+#  define update_model update_model_5bpc
+#  define find_bucket find_bucket_5bpc
+#  define family family_5bpc
+#  define BPC_MASK 0x1fU
+#elif BPC == 8
+#  define golomb_coding golomb_coding_8bpc
+#  define golomb_decoding golomb_decoding_8bpc
+#  define update_model update_model_8bpc
+#  define find_bucket find_bucket_8bpc
+#  define family family_8bpc
+#  define BPC_MASK 0xffU
+#else
+#  error BPC must be 5 or 8
+#endif
 
 #define _PIXEL_A(channel, curr) ((unsigned int)GET_##channel((curr) - 1))
 #define _PIXEL_B(channel, prev) ((unsigned int)GET_##channel(prev))
@@ -148,11 +181,6 @@
                  correlate_row_##channel[index])
 #define UPDATE_MODEL(index) APPLY_ALL_COMP(UPDATE_MODEL_COMP, index)
 
-#define APPLY_ALL_COMP(macro, ...) \
-    macro(r, ## __VA_ARGS__); \
-    macro(g, ## __VA_ARGS__); \
-    macro(b, ## __VA_ARGS__)
-
 #define RLE_PRED_IMP                                                                \
 if (SAME_PIXEL(&prev_row[i - 1], &prev_row[i])) {                                   \
     if (run_index != i && i > 2 && SAME_PIXEL(&cur_row[i - 1], &cur_row[i - 2])) {  \
@@ -169,14 +197,8 @@ static void FNAME(compress_row0_seg)(Encoder *encoder, CHANNEL_ARG_ int i,
                                      SPICE_GNUC_UNUSED const unsigned int bpc,
                                      const unsigned int bpc_mask)
 {
-    CommonState *state = &encoder->rgb_state;
-    Channel * const channel_r = encoder->channels;
-    Channel * const channel_g = channel_r + 1;
-    Channel * const channel_b = channel_g + 1;
-
-    BYTE * const correlate_row_r = channel_r->correlate_row;
-    BYTE * const correlate_row_g = channel_g->correlate_row;
-    BYTE * const correlate_row_b = channel_b->correlate_row;
+    DECLARE_STATE_VARIABLES;
+    DECLARE_CHANNEL_VARIABLES;
     int stopidx;
 
     spice_assert(end - i > 0);
@@ -216,7 +238,7 @@ static void FNAME(compress_row0_seg)(Encoder *encoder, CHANNEL_ARG_ int i,
 static void FNAME(compress_row0)(Encoder *encoder, CHANNEL_ARG_ const PIXEL *cur_row,
                                  unsigned int width)
 {
-    CommonState *state = &encoder->rgb_state;
+    DECLARE_STATE_VARIABLES;
     const unsigned int bpc = BPC;
     const unsigned int bpc_mask = BPC_MASK;
     int pos = 0;
@@ -267,14 +289,8 @@ static void FNAME(compress_row_seg)(Encoder *encoder, CHANNEL_ARG_ int i,
                                     SPICE_GNUC_UNUSED const unsigned int bpc,
                                     const unsigned int bpc_mask)
 {
-    CommonState *state = &encoder->rgb_state;
-    Channel * const channel_r = encoder->channels;
-    Channel * const channel_g = channel_r + 1;
-    Channel * const channel_b = channel_g + 1;
-
-    BYTE * const correlate_row_r = channel_r->correlate_row;
-    BYTE * const correlate_row_g = channel_g->correlate_row;
-    BYTE * const correlate_row_b = channel_b->correlate_row;
+    DECLARE_STATE_VARIABLES;
+    DECLARE_CHANNEL_VARIABLES;
     int stopidx;
     int run_index = 0;
     int run_size;
@@ -336,7 +352,7 @@ static void FNAME(compress_row)(Encoder *encoder, CHANNEL_ARG_
                                 unsigned int width)
 
 {
-    CommonState *state = &encoder->rgb_state;
+    DECLARE_STATE_VARIABLES;
     const unsigned int bpc = BPC;
     const unsigned int bpc_mask = BPC_MASK;
     unsigned int pos = 0;
@@ -393,14 +409,8 @@ static void FNAME(uncompress_row0_seg)(Encoder *encoder, CHANNEL_ARG_ int i,
                                        SPICE_GNUC_UNUSED const unsigned int bpc,
                                        const unsigned int bpc_mask)
 {
-    CommonState *state = &encoder->rgb_state;
-    Channel * const channel_r = encoder->channels;
-    Channel * const channel_g = channel_r + 1;
-    Channel * const channel_b = channel_g + 1;
-
-    BYTE * const correlate_row_r = channel_r->correlate_row;
-    BYTE * const correlate_row_g = channel_g->correlate_row;
-    BYTE * const correlate_row_b = channel_b->correlate_row;
+    DECLARE_STATE_VARIABLES;
+    DECLARE_CHANNEL_VARIABLES;
     int stopidx;
 
     spice_assert(end - i > 0);
@@ -447,7 +457,7 @@ static void FNAME(uncompress_row0)(Encoder *encoder, CHANNEL_ARG_
                                    unsigned int width)
 
 {
-    CommonState *state = &encoder->rgb_state;
+    DECLARE_STATE_VARIABLES;
     const unsigned int bpc = BPC;
     const unsigned int bpc_mask = BPC_MASK;
     unsigned int pos = 0;
@@ -505,14 +515,8 @@ static void FNAME(uncompress_row_seg)(Encoder *encoder, CHANNEL_ARG_
                                       SPICE_GNUC_UNUSED const unsigned int bpc,
                                       const unsigned int bpc_mask)
 {
-    CommonState *state = &encoder->rgb_state;
-    Channel * const channel_r = encoder->channels;
-    Channel * const channel_g = channel_r + 1;
-    Channel * const channel_b = channel_g + 1;
-
-    BYTE * const correlate_row_r = channel_r->correlate_row;
-    BYTE * const correlate_row_g = channel_g->correlate_row;
-    BYTE * const correlate_row_b = channel_b->correlate_row;
+    DECLARE_STATE_VARIABLES;
+    DECLARE_CHANNEL_VARIABLES;
     const unsigned int waitmask = bppmask[state->wmidx];
     int stopidx;
     int run_index = 0;
@@ -587,7 +591,7 @@ static void FNAME(uncompress_row)(Encoder *encoder, CHANNEL_ARG_
                                   unsigned int width)
 
 {
-    CommonState *state = &encoder->rgb_state;
+    DECLARE_STATE_VARIABLES;
     const unsigned int bpc = BPC;
     const unsigned int bpc_mask = BPC_MASK;
     unsigned int pos = 0;
@@ -649,8 +653,12 @@ static void FNAME(uncompress_row)(Encoder *encoder, CHANNEL_ARG_
 #undef GET_g
 #undef SET_b
 #undef GET_b
+#undef SET_a
+#undef GET_a
 #undef UNCOMPRESS_PIX_START
 #undef UPDATE_MODEL_COMP
 #undef CHANNEL_ARG_
 #undef CHANNEL_
 #undef APPLY_ALL_COMP
+#undef DECLARE_STATE_VARIABLES
+#undef DECLARE_CHANNEL_VARIABLES
diff --git a/common/quic_tmpl.c b/common/quic_tmpl.c
index 37b15cf..513a0c6 100644
--- a/common/quic_tmpl.c
+++ b/common/quic_tmpl.c
@@ -19,35 +19,130 @@
 #include <config.h>
 #endif
 
+#define COMPRESS_IMP
+
+#if defined(ONE_BYTE) || defined(FOUR_BYTE)
+#  define CHANNEL_ARG_ Channel *channel_a,
+#  define CHANNEL_ channel_a,
+#  define UNCOMPRESS_PIX_START(row) do { } while (0)
+#  define SET_a(pix, val) ((pix)->a = val)
+#  define GET_a(pix) ((pix)->a)
+#  define SAME_PIXEL(p1, p2) (GET_a(p1) == GET_a(p2))
+#  define DECLARE_STATE_VARIABLES \
+    CommonState *state = &channel_a->state
+#  define DECLARE_CHANNEL_VARIABLES \
+    BYTE * const correlate_row_a = channel_a->correlate_row
+#  define APPLY_ALL_COMP(macro, ...) \
+    macro(a, ## __VA_ARGS__)
+#else
+#  define CHANNEL_ARG_
+#  define CHANNEL_
+#  define SAME_PIXEL(p1, p2)                               \
+    (GET_r(p1) == GET_r(p2) && GET_g(p1) == GET_g(p2) &&   \
+     GET_b(p1) == GET_b(p2))
+#  define DECLARE_STATE_VARIABLES \
+    CommonState *state = &encoder->rgb_state
+#  define DECLARE_CHANNEL_VARIABLES \
+    Channel * const channel_r = encoder->channels; \
+    Channel * const channel_g = channel_r + 1; \
+    Channel * const channel_b = channel_g + 1; \
+    BYTE * const correlate_row_r = channel_r->correlate_row; \
+    BYTE * const correlate_row_g = channel_g->correlate_row; \
+    BYTE * const correlate_row_b = channel_b->correlate_row
+#  define APPLY_ALL_COMP(macro, ...) \
+    macro(r, ## __VA_ARGS__); \
+    macro(g, ## __VA_ARGS__); \
+    macro(b, ## __VA_ARGS__)
+#endif
+
 #ifdef ONE_BYTE
 #undef ONE_BYTE
 #define FNAME(name) quic_one_##name
 #define PIXEL one_byte_t
+#define BPC 8
 #endif
 
 #ifdef FOUR_BYTE
 #undef FOUR_BYTE
 #define FNAME(name) quic_four_##name
 #define PIXEL four_bytes_t
+#define BPC 8
 #endif
 
-#define golomb_coding golomb_coding_8bpc
-#define golomb_decoding golomb_decoding_8bpc
-#define update_model update_model_8bpc
-#define find_bucket find_bucket_8bpc
-#define family family_8bpc
+#ifdef QUIC_RGB32
+#undef QUIC_RGB32
+#define PIXEL rgb32_pixel_t
+#define FNAME(name) quic_rgb32_##name
+#define BPC 8
+#define SET_r(pix, val) ((pix)->r = val)
+#define GET_r(pix) ((pix)->r)
+#define SET_g(pix, val) ((pix)->g = val)
+#define GET_g(pix) ((pix)->g)
+#define SET_b(pix, val) ((pix)->b = val)
+#define GET_b(pix) ((pix)->b)
+#define UNCOMPRESS_PIX_START(pix) ((pix)->pad = 0)
+#endif
 
+#ifdef QUIC_RGB24
+#undef QUIC_RGB24
+#define PIXEL rgb24_pixel_t
+#define FNAME(name) quic_rgb24_##name
 #define BPC 8
-#define BPC_MASK 0xffU
+#define SET_r(pix, val) ((pix)->r = val)
+#define GET_r(pix) ((pix)->r)
+#define SET_g(pix, val) ((pix)->g = val)
+#define GET_g(pix) ((pix)->g)
+#define SET_b(pix, val) ((pix)->b = val)
+#define GET_b(pix) ((pix)->b)
+#define UNCOMPRESS_PIX_START(pix)
+#endif
 
-#define CHANNEL_ARG_ Channel *channel_a,
-#define CHANNEL_ channel_a,
+#ifdef QUIC_RGB16
+#undef QUIC_RGB16
+#define PIXEL rgb16_pixel_t
+#define FNAME(name) quic_rgb16_##name
+#define BPC 5
+#define SET_r(pix, val) (*(pix) = (*(pix) & ~(0x1f << 10)) | ((val) << 10))
+#define GET_r(pix) ((*(pix) >> 10) & 0x1f)
+#define SET_g(pix, val) (*(pix) = (*(pix) & ~(0x1f << 5)) | ((val) << 5))
+#define GET_g(pix) ((*(pix) >> 5) & 0x1f)
+#define SET_b(pix, val) (*(pix) = (*(pix) & ~0x1f) | (val))
+#define GET_b(pix) (*(pix) & 0x1f)
+#define UNCOMPRESS_PIX_START(pix) (*(pix) = 0)
+#endif
 
-#define SET_a(pix, val) ((pix)->a = val)
-#define GET_a(pix) ((pix)->a)
+#ifdef QUIC_RGB16_TO_32
+#undef QUIC_RGB16_TO_32
+#define PIXEL rgb32_pixel_t
+#define FNAME(name) quic_rgb16_to_32_##name
+#define BPC 5
+#undef COMPRESS_IMP
+#define SET_r(pix, val) ((pix)->r = ((val) << 3) | (((val) & 0x1f) >> 2))
+#define GET_r(pix) ((pix)->r >> 3)
+#define SET_g(pix, val) ((pix)->g = ((val) << 3) | (((val) & 0x1f) >> 2))
+#define GET_g(pix) ((pix)->g >> 3)
+#define SET_b(pix, val) ((pix)->b = ((val) << 3) | (((val) & 0x1f) >> 2))
+#define GET_b(pix) ((pix)->b >> 3)
+#define UNCOMPRESS_PIX_START(pix) ((pix)->pad = 0)
+#endif
 
-#define SAME_PIXEL(p1, p2)                                 \
-     (GET_a(p1) == GET_a(p2))
+#if BPC == 5
+#  define golomb_coding golomb_coding_5bpc
+#  define golomb_decoding golomb_decoding_5bpc
+#  define update_model update_model_5bpc
+#  define find_bucket find_bucket_5bpc
+#  define family family_5bpc
+#  define BPC_MASK 0x1fU
+#elif BPC == 8
+#  define golomb_coding golomb_coding_8bpc
+#  define golomb_decoding golomb_decoding_8bpc
+#  define update_model update_model_8bpc
+#  define find_bucket find_bucket_8bpc
+#  define family family_8bpc
+#  define BPC_MASK 0xffU
+#else
+#  error BPC must be 5 or 8
+#endif
 
 #define _PIXEL_A(channel, curr) ((unsigned int)GET_##channel((curr) - 1))
 #define _PIXEL_B(channel, prev) ((unsigned int)GET_##channel(prev))
@@ -66,11 +161,10 @@
     r = family.xlatU2L[(unsigned)((int)GET_##channel(curr) - (int)((_PIXEL_A(channel, curr) +  \
     _PIXEL_B(channel, prev)) >> 1)) & bpc_mask]
 
-static inline void FNAME(correlate)(const PIXEL *prev, PIXEL *curr, const BYTE correlate,
-                                    const unsigned int bpc_mask)
-{
-    curr->a = (family.xlatL2U[correlate] + (int)((_PIXEL_A(a, curr) + _PIXEL_B(a, prev)) >> 1)) & bpc_mask;
-}
+#define CORRELATE(channel, prev, curr, correlate, bpc_mask, r)                                  \
+    SET_##channel(r, ((family.xlatL2U[correlate] + \
+         (int)((_PIXEL_A(channel, curr) + _PIXEL_B(channel, prev)) >> 1)) & bpc_mask))
+
 
 #define COMPRESS_ONE_ROW0_0(channel)                                                  \
     correlate_row_##channel[0] = family.xlatU2L[GET_##channel(cur_row)];              \
@@ -87,9 +181,6 @@ static inline void FNAME(correlate)(const PIXEL *prev, PIXEL *curr, const BYTE c
                  correlate_row_##channel[index])
 #define UPDATE_MODEL(index) APPLY_ALL_COMP(UPDATE_MODEL_COMP, index)
 
-#define APPLY_ALL_COMP(macro, ...) \
-    macro(a, ## __VA_ARGS__)
-
 #define RLE_PRED_IMP                                                                \
 if (SAME_PIXEL(&prev_row[i - 1], &prev_row[i])) {                                   \
     if (run_index != i && i > 2 && SAME_PIXEL(&cur_row[i - 1], &cur_row[i - 2])) {  \
@@ -97,6 +188,8 @@ if (SAME_PIXEL(&prev_row[i - 1], &prev_row[i])) {
     }                                                                               \
 }
 
+#ifdef COMPRESS_IMP
+
 static void FNAME(compress_row0_seg)(Encoder *encoder, CHANNEL_ARG_ int i,
                                      const PIXEL * const cur_row,
                                      const int end,
@@ -104,8 +197,8 @@ static void FNAME(compress_row0_seg)(Encoder *encoder, CHANNEL_ARG_ int i,
                                      SPICE_GNUC_UNUSED const unsigned int bpc,
                                      const unsigned int bpc_mask)
 {
-    CommonState *state = &channel_a->state;
-    BYTE * const correlate_row_a = channel_a->correlate_row;
+    DECLARE_STATE_VARIABLES;
+    DECLARE_CHANNEL_VARIABLES;
     int stopidx;
 
     spice_assert(end - i > 0);
@@ -145,7 +238,7 @@ static void FNAME(compress_row0_seg)(Encoder *encoder, CHANNEL_ARG_ int i,
 static void FNAME(compress_row0)(Encoder *encoder, CHANNEL_ARG_ const PIXEL *cur_row,
                                  unsigned int width)
 {
-    CommonState *state = &channel_a->state;
+    DECLARE_STATE_VARIABLES;
     const unsigned int bpc = BPC;
     const unsigned int bpc_mask = BPC_MASK;
     int pos = 0;
@@ -196,8 +289,8 @@ static void FNAME(compress_row_seg)(Encoder *encoder, CHANNEL_ARG_ int i,
                                     SPICE_GNUC_UNUSED const unsigned int bpc,
                                     const unsigned int bpc_mask)
 {
-    CommonState *state = &channel_a->state;
-    BYTE * const correlate_row_a = channel_a->correlate_row;
+    DECLARE_STATE_VARIABLES;
+    DECLARE_CHANNEL_VARIABLES;
     int stopidx;
     int run_index = 0;
     int run_size;
@@ -259,7 +352,7 @@ static void FNAME(compress_row)(Encoder *encoder, CHANNEL_ARG_
                                 unsigned int width)
 
 {
-    CommonState *state = &channel_a->state;
+    DECLARE_STATE_VARIABLES;
     const unsigned int bpc = BPC;
     const unsigned int bpc_mask = BPC_MASK;
     unsigned int pos = 0;
@@ -291,7 +384,7 @@ static void FNAME(compress_row)(Encoder *encoder, CHANNEL_ARG_
     spice_assert(DEFwminext > 0);
 }
 
-#define UNCOMPRESS_PIX_START(row) do { } while (0)
+#endif
 
 #define UNCOMPRESS_ONE_ROW0_0(channel)                                                            \
     correlate_row_##channel[0] = (BYTE)golomb_decoding(find_bucket(channel_##channel,                              \
@@ -316,8 +409,8 @@ static void FNAME(uncompress_row0_seg)(Encoder *encoder, CHANNEL_ARG_ int i,
                                        SPICE_GNUC_UNUSED const unsigned int bpc,
                                        const unsigned int bpc_mask)
 {
-    CommonState *state = &channel_a->state;
-    BYTE * const correlate_row_a = channel_a->correlate_row;
+    DECLARE_STATE_VARIABLES;
+    DECLARE_CHANNEL_VARIABLES;
     int stopidx;
 
     spice_assert(end - i > 0);
@@ -364,7 +457,7 @@ static void FNAME(uncompress_row0)(Encoder *encoder, CHANNEL_ARG_
                                    unsigned int width)
 
 {
-    CommonState *state = &channel_a->state;
+    DECLARE_STATE_VARIABLES;
     const unsigned int bpc = BPC;
     const unsigned int bpc_mask = BPC_MASK;
     unsigned int pos = 0;
@@ -410,7 +503,8 @@ static void FNAME(uncompress_row0)(Encoder *encoder, CHANNEL_ARG_
                                                                   correlate_row_##channel[i - 1])->bestcode,    \
                                                                   encoder->io_word,                             \
                                                                   &codewordlen);                                \
-    FNAME(correlate)(&prev_row[i], &cur_row[i], correlate_row_##channel[i], bpc_mask);                          \
+    CORRELATE(channel, &prev_row[i], &cur_row[i], correlate_row_##channel[i], bpc_mask,           \
+             &cur_row[i]);                                                                        \
     decode_eatbits(encoder, codewordlen);
 
 static void FNAME(uncompress_row_seg)(Encoder *encoder, CHANNEL_ARG_
@@ -421,8 +515,8 @@ static void FNAME(uncompress_row_seg)(Encoder *encoder, CHANNEL_ARG_
                                       SPICE_GNUC_UNUSED const unsigned int bpc,
                                       const unsigned int bpc_mask)
 {
-    CommonState *state = &channel_a->state;
-    BYTE * const correlate_row_a = channel_a->correlate_row;
+    DECLARE_STATE_VARIABLES;
+    DECLARE_CHANNEL_VARIABLES;
     const unsigned int waitmask = bppmask[state->wmidx];
     int stopidx;
     int run_index = 0;
@@ -495,7 +589,7 @@ static void FNAME(uncompress_row)(Encoder *encoder, CHANNEL_ARG_
                                   unsigned int width)
 
 {
-    CommonState *state = &channel_a->state;
+    DECLARE_STATE_VARIABLES;
     const unsigned int bpc = BPC;
     const unsigned int bpc_mask = BPC_MASK;
     unsigned int pos = 0;
@@ -532,6 +626,17 @@ static void FNAME(uncompress_row)(Encoder *encoder, CHANNEL_ARG_
 #undef _PIXEL_B
 #undef SAME_PIXEL
 #undef RLE_PRED_IMP
+#undef UPDATE_MODEL
+#undef DECORRELATE_0
+#undef DECORRELATE
+#undef COMPRESS_ONE_0
+#undef COMPRESS_ONE
+#undef CORRELATE_0
+#undef CORRELATE
+#undef UNCOMPRESS_ONE_ROW0_0
+#undef UNCOMPRESS_ONE_ROW0
+#undef UNCOMPRESS_ONE_0
+#undef UNCOMPRESS_ONE
 #undef golomb_coding
 #undef golomb_decoding
 #undef update_model
@@ -539,16 +644,19 @@ static void FNAME(uncompress_row)(Encoder *encoder, CHANNEL_ARG_
 #undef family
 #undef BPC
 #undef BPC_MASK
-#undef UPDATE_MODEL
-#undef UNCOMPRESS_PIX_START
-#undef COMPRESS_ONE_0
-#undef COMPRESS_ONE
-#undef UNCOMPRESS_ONE_ROW0
-#undef UNCOMPRESS_ONE_ROW0_0
-#undef UNCOMPRESS_ONE_0
-#undef UNCOMPRESS_ONE
+#undef COMPRESS_IMP
+#undef SET_r
+#undef GET_r
+#undef SET_g
+#undef GET_g
+#undef SET_b
+#undef GET_b
 #undef SET_a
 #undef GET_a
+#undef UNCOMPRESS_PIX_START
+#undef UPDATE_MODEL_COMP
 #undef CHANNEL_ARG_
 #undef CHANNEL_
 #undef APPLY_ALL_COMP
+#undef DECLARE_STATE_VARIABLES
+#undef DECLARE_CHANNEL_VARIABLES
-- 
2.17.1



More information about the Spice-devel mailing list