Re: [PATCH spice-common 1/6] quic: Call encode from golomb_coding

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Looks simpler to me, though I don't know the history of why these were
separated like this. Unless somebody else has objections:

Acked-by: Jonathon Jongsma <jjongsma@xxxxxxxxxx>


On Thu, 2018-06-28 at 14:23 +0100, Frediano Ziglio wrote:
> golomb_coding is always followed by a encode call.
> Simplify code calling directly it, no reason to pass back output
> using pointers.
> 
> Signed-off-by: Frediano Ziglio <fziglio@xxxxxxxxxx>
> ---
>  common/quic.c             |  2 ++
>  common/quic_family_tmpl.c |  6 ++----
>  common/quic_rgb_tmpl.c    | 43 ++++++++++++-------------------------
> --
>  common/quic_tmpl.c        | 39 ++++++++++-------------------------
>  4 files changed, 28 insertions(+), 62 deletions(-)
> 
> diff --git a/common/quic.c b/common/quic.c
> index 90aac85..04f3999 100644
> --- a/common/quic.c
> +++ b/common/quic.c
> @@ -93,6 +93,8 @@ typedef struct s_bucket {
>  
>  typedef struct Encoder Encoder;
>  
> +static inline void encode(Encoder *encoder, unsigned int word,
> unsigned int len);
> +
>  typedef struct CommonState {
>      unsigned int waitcnt;
>      unsigned int tabrand_seed;
> diff --git a/common/quic_family_tmpl.c b/common/quic_family_tmpl.c
> index cda15bd..70fe758 100644
> --- a/common/quic_family_tmpl.c
> +++ b/common/quic_family_tmpl.c
> @@ -44,11 +44,9 @@ static inline unsigned int
> FNAME(golomb_code_len)(const BYTE n, const unsigned i
>      return VNAME(family).golomb_code_len[n][l];
>  }
>  
> -static void FNAME(golomb_coding)(const BYTE n, const unsigned int l,
> unsigned int * const codeword,
> -                                 unsigned int * const codewordlen)
> +static void FNAME(golomb_coding)(Encoder *encoder, const BYTE n,
> const unsigned int l)
>  {
> -    *codeword = FNAME(golomb_code)(n, l);
> -    *codewordlen = FNAME(golomb_code_len)(n, l);
> +    encode(encoder, FNAME(golomb_code)(n, l),
> FNAME(golomb_code_len)(n, l));
>  }
>  
>  static unsigned int FNAME(golomb_decoding)(const unsigned int l,
> const unsigned int bits,
> diff --git a/common/quic_rgb_tmpl.c b/common/quic_rgb_tmpl.c
> index 4800ece..e0a05ca 100644
> --- a/common/quic_rgb_tmpl.c
> +++ b/common/quic_rgb_tmpl.c
> @@ -130,19 +130,15 @@
>            (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)];            \
> -    golomb_coding(correlate_row_##channel[0],
> find_bucket(channel_##channel,        \
> -                  correlate_row_##channel[-1])-
> >bestcode,                           \
> -                  &codeword,
> &codewordlen);                                         \
> -    encode(encoder, codeword, codewordlen);
> -
> -#define COMPRESS_ONE_ROW0(channel,
> index)                                               \
> -    correlate_row_##channel[index] = DECORRELATE_0(channel,
> &cur_row[index], bpc_mask); \
> -    golomb_coding(correlate_row_##channel[index],
> find_bucket(channel_##channel,        \
> -                  correlate_row_##channel[index -1])-
> >bestcode,                         \
> -                  &codeword,
> &codewordlen);                                             \
> -    encode(encoder, codeword, codewordlen);
> +#define
> COMPRESS_ONE_ROW0_0(channel)                                         
>          \
> +    correlate_row_##channel[0] =
> family.xlatU2L[GET_##channel(cur_row)];              \
> +    golomb_coding(encoder, correlate_row_##channel[0],
> find_bucket(channel_##channel, \
> +                  correlate_row_##channel[-1])->bestcode)
> +
> +#define COMPRESS_ONE_ROW0(channel,
> index)                                                 \
> +    correlate_row_##channel[index] = DECORRELATE_0(channel,
> &cur_row[index], bpc_mask);   \
> +    golomb_coding(encoder, correlate_row_##channel[index],
> find_bucket(channel_##channel, \
> +                  correlate_row_##channel[index -1])->bestcode)
>  
>  #define
> UPDATE_MODEL(index)                                                  
>           \
>      update_model(state, find_bucket(channel_r, correlate_row_r[index
> - 1]),            \
> @@ -182,8 +178,6 @@ static void FNAME(compress_row0_seg)(Encoder
> *encoder, int i,
>      spice_assert(end - i > 0);
>  
>      if (i == 0) {
> -        unsigned int codeword, codewordlen;
> -
>          COMPRESS_ONE_ROW0_0(r);
>          COMPRESS_ONE_ROW0_0(g);
>          COMPRESS_ONE_ROW0_0(b);
> @@ -201,7 +195,6 @@ static void FNAME(compress_row0_seg)(Encoder
> *encoder, int i,
>  
>      while (stopidx < end) {
>          for (; i <= stopidx; i++) {
> -            unsigned int codeword, codewordlen;
>              COMPRESS_ONE_ROW0(r, i);
>              COMPRESS_ONE_ROW0(g, i);
>              COMPRESS_ONE_ROW0(b, i);
> @@ -212,8 +205,6 @@ static void FNAME(compress_row0_seg)(Encoder
> *encoder, int i,
>      }
>  
>      for (; i < end; i++) {
> -        unsigned int codeword, codewordlen;
> -
>          COMPRESS_ONE_ROW0(r, i);
>          COMPRESS_ONE_ROW0(g, i);
>          COMPRESS_ONE_ROW0(b, i);
> @@ -258,18 +249,14 @@ static void FNAME(compress_row0)(Encoder
> *encoder, const PIXEL *cur_row,
>  #define COMPRESS_ONE_0(channel) \
>      correlate_row_##channel[0] =
> family.xlatU2L[(unsigned)((int)GET_##channel(cur_row) -    \
>                                                  (int)GET_##channel(p
> rev_row) ) & bpc_mask]; \
> -    golomb_coding(correlate_row_##channel[0],                       
>                         \
> -                  find_bucket(channel_##channel,
> correlate_row_##channel[-1])->bestcode,    \
> -                  &codeword,
> &codewordlen);                                                 \
> -    encode(encoder, codeword, codewordlen);
> +    golomb_coding(encoder,
> correlate_row_##channel[0],                                      \
> +                  find_bucket(channel_##channel,
> correlate_row_##channel[-1])->bestcode)
>  
>  #define COMPRESS_ONE(channel,
> index)                                                            \
>      DECORRELATE(channel, &prev_row[index],
> &cur_row[index],bpc_mask,                            \
>                 correlate_row_##channel[index]);                     
>                             \
> -    golomb_coding(correlate_row_##channel[index],                   
>                             \
> -                 find_bucket(channel_##channel,
> correlate_row_##channel[index - 1])->bestcode,  \
> -                 &codeword,
> &codewordlen);                                                      \
> -    encode(encoder, codeword, codewordlen);
> +    golomb_coding(encoder,
> correlate_row_##channel[index],                                      
> \
> +                 find_bucket(channel_##channel,
> correlate_row_##channel[index - 1])->bestcode)
>  
>  static void FNAME(compress_row_seg)(Encoder *encoder, int i,
>                                      const PIXEL * const prev_row,
> @@ -294,8 +281,6 @@ static void FNAME(compress_row_seg)(Encoder
> *encoder, int i,
>      spice_assert(end - i > 0);
>  
>      if (i == 0) {
> -        unsigned int codeword, codewordlen;
> -
>          COMPRESS_ONE_0(r);
>          COMPRESS_ONE_0(g);
>          COMPRESS_ONE_0(b);
> @@ -313,7 +298,6 @@ static void FNAME(compress_row_seg)(Encoder
> *encoder, int i,
>      for (;;) {
>          while (stopidx < end) {
>              for (; i <= stopidx; i++) {
> -                unsigned int codeword, codewordlen;
>                  RLE_PRED_IMP;
>                  COMPRESS_ONE(r, i);
>                  COMPRESS_ONE(g, i);
> @@ -325,7 +309,6 @@ static void FNAME(compress_row_seg)(Encoder
> *encoder, int i,
>          }
>  
>          for (; i < end; i++) {
> -            unsigned int codeword, codewordlen;
>              RLE_PRED_IMP;
>              COMPRESS_ONE(r, i);
>              COMPRESS_ONE(g, i);
> diff --git a/common/quic_tmpl.c b/common/quic_tmpl.c
> index dc2f81b..8069909 100644
> --- a/common/quic_tmpl.c
> +++ b/common/quic_tmpl.c
> @@ -82,19 +82,15 @@ static inline void FNAME(correlate)(const PIXEL
> *prev, PIXEL *curr, const BYTE c
>  
>  #define
> COMPRESS_ONE_ROW0_0(channel)                                 \
>      channel->correlate_row[0] = family.xlatU2L[cur_row-
> >a];          \
> -    golomb_coding(channel-
> >correlate_row[0],                         \
> +    golomb_coding(encoder, channel-
> >correlate_row[0],                \
>                    find_bucket(channel,                              
>  \
> -                              channel->correlate_row[-1])->bestcode, 
> \
> -                  &codeword,
> &codewordlen);                          \
> -    encode(encoder, codeword, codewordlen);
> +                              channel->correlate_row[-1])->bestcode)
>  
>  #define COMPRESS_ONE_ROW0(channel,
> index)                                               \
>      channel->correlate_row[index] =
> FNAME(decorrelate_0)(&cur_row[index], bpc_mask);    \
> -    golomb_coding(channel-
> >correlate_row[index],                                        \
> +    golomb_coding(encoder, channel-
> >correlate_row[index],                               \
>                    find_bucket(channel,                              
>                     \
> -                              channel->correlate_row[index - 1])-
> >bestcode,             \
> -                  &codeword,
> &codewordlen);                                             \
> -    encode(encoder, codeword, codewordlen);
> +                              channel->correlate_row[index - 1])-
> >bestcode)
>  
>  #define
> UPDATE_MODEL(index)                                                  
>            \
>      update_model(state, find_bucket(channel, channel-
> >correlate_row[index - 1]),        \
> @@ -113,8 +109,6 @@ static void FNAME(compress_row0_seg)(Encoder
> *encoder, Channel *channel, int i,
>      spice_assert(end - i > 0);
>  
>      if (i == 0) {
> -        unsigned int codeword, codewordlen;
> -
>          COMPRESS_ONE_ROW0_0(channel);
>  
>          if (state->waitcnt) {
> @@ -130,7 +124,6 @@ static void FNAME(compress_row0_seg)(Encoder
> *encoder, Channel *channel, int i,
>  
>      while (stopidx < end) {
>          for (; i <= stopidx; i++) {
> -            unsigned int codeword, codewordlen;
>              COMPRESS_ONE_ROW0(channel, i);
>          }
>  
> @@ -139,8 +132,6 @@ static void FNAME(compress_row0_seg)(Encoder
> *encoder, Channel *channel, int i,
>      }
>  
>      for (; i < end; i++) {
> -        unsigned int codeword, codewordlen;
> -
>          COMPRESS_ONE_ROW0(channel, i);
>      }
>      state->waitcnt = stopidx - end;
> @@ -186,17 +177,13 @@ static void FNAME(compress_row0)(Encoder
> *encoder, Channel *channel, const PIXEL
>  #define COMPRESS_ONE_0(channel) \
>      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);
> +    golomb_coding(encoder, channel-
> >correlate_row[0],                                           \
> +                  find_bucket(channel, channel->correlate_row[-1])-
> >bestcode)
> +
> +#define COMPRESS_ONE(channel,
> index)                                                               
>    \
> +     channel->correlate_row[index] =
> FNAME(decorrelate)(&prev_row[index], &cur_row[index], bpc_mask); \
> +     golomb_coding(encoder, channel-
> >correlate_row[index],                                            \
> +                  find_bucket(channel, channel->correlate_row[index
> - 1])->bestcode)
>  
>  static void FNAME(compress_row_seg)(Encoder *encoder, Channel
> *channel, int i,
>                                      const PIXEL * const prev_row,
> @@ -214,8 +201,6 @@ static void FNAME(compress_row_seg)(Encoder
> *encoder, Channel *channel, int i,
>      spice_assert(end - i > 0);
>  
>      if (i == 0) {
> -        unsigned int codeword, codewordlen;
> -
>          COMPRESS_ONE_0(channel);
>  
>          if (state->waitcnt) {
> @@ -232,7 +217,6 @@ static void FNAME(compress_row_seg)(Encoder
> *encoder, Channel *channel, int i,
>      for (;;) {
>          while (stopidx < end) {
>              for (; i <= stopidx; i++) {
> -                unsigned int codeword, codewordlen;
>                  RLE_PRED_IMP;
>                  COMPRESS_ONE(channel, i);
>              }
> @@ -242,7 +226,6 @@ static void FNAME(compress_row_seg)(Encoder
> *encoder, Channel *channel, int i,
>          }
>  
>          for (; i < end; i++) {
> -            unsigned int codeword, codewordlen;
>              RLE_PRED_IMP;
>              COMPRESS_ONE(channel, i);
>          }
_______________________________________________
Spice-devel mailing list
Spice-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/spice-devel




[Index of Archives]     [Linux Virtualization]     [Linux Virtualization]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]     [Monitors]