Re: [PATCH 3/5] LZ4: Do not reverse bottom-up images

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

 



Some small comment in the commit log as to why we no longer want to swap
the image would be nice (was it broken? does it make the code simpler?
.. )

Christophe

On Thu, Jan 22, 2015 at 05:21:06PM +0100, Javier Celaya wrote:
> ---
>  server/lz4_encoder.c | 13 ++++++-------
>  server/lz4_encoder.h |  7 +++----
>  server/red_worker.c  | 18 +++++-------------
>  3 files changed, 14 insertions(+), 24 deletions(-)
> 
> diff --git a/server/lz4_encoder.c b/server/lz4_encoder.c
> index aa03721..2327e9a 100644
> --- a/server/lz4_encoder.c
> +++ b/server/lz4_encoder.c
> @@ -49,21 +49,20 @@ void lz4_encoder_destroy(Lz4EncoderContext* encoder)
>      free(encoder);
>  }
>  
> -int lz4_encode(Lz4EncoderContext *lz4, int height, int stride,
> -               uint8_t *io_ptr, unsigned int num_io_bytes)
> +int lz4_encode(Lz4EncoderContext *lz4, int height, int stride, uint8_t *io_ptr,
> +               unsigned int num_io_bytes, int top_down)
>  {
>      Lz4Encoder *enc = (Lz4Encoder *)lz4;
>      uint8_t *lines;
>      int num_lines = 0;
>      int total_lines = 0;
>      int in_size, enc_size, out_size, already_copied;
> -    int stride_abs = abs(stride);
>      uint8_t *in_buf, *compressed_lines;
>      uint8_t *out_buf = io_ptr;
>      LZ4_stream_t *stream = LZ4_createStream();
>  
>      // Encode direction
> -    *(out_buf++) = stride < 0 ? 1 : 0;
> +    *(out_buf++) = top_down ? 1 : 0;
>      num_io_bytes--;
>      out_size = 1;
>  
> @@ -74,9 +73,9 @@ int lz4_encode(Lz4EncoderContext *lz4, int height, int stride,
>              LZ4_freeStream(stream);
>              return 0;
>          }
> -        in_buf = stride < 0 ? lines - (stride_abs * (num_lines - 1)) : lines;
> -        lines += stride * num_lines;
> -        in_size = stride_abs * num_lines;
> +        in_buf = lines;
> +        in_size = stride * num_lines;
> +        lines += in_size;
>          compressed_lines = (uint8_t *) malloc(LZ4_compressBound(in_size) + 4);
>          enc_size = LZ4_compress_continue(stream, (const char *) in_buf,
>                                           (char *) compressed_lines + 4, in_size);
> diff --git a/server/lz4_encoder.h b/server/lz4_encoder.h
> index f3359c0..97b8dc8 100644
> --- a/server/lz4_encoder.h
> +++ b/server/lz4_encoder.h
> @@ -43,8 +43,7 @@ struct Lz4EncoderUsrContext {
>  Lz4EncoderContext* lz4_encoder_create(Lz4EncoderUsrContext *usr);
>  void lz4_encoder_destroy(Lz4EncoderContext *encoder);
>  
> -/* returns the total size of the encoded data. Images must be supplied from the
> -   top line to the bottom */
> -int lz4_encode(Lz4EncoderContext *lz4, int height, int stride,
> -               uint8_t *io_ptr, unsigned int num_io_bytes);
> +/* returns the total size of the encoded data. */
> +int lz4_encode(Lz4EncoderContext *lz4, int height, int stride, uint8_t *io_ptr,
> +               unsigned int num_io_bytes, int top_down);
>  #endif
> diff --git a/server/red_worker.c b/server/red_worker.c
> index 8f07ee9..922a459 100644
> --- a/server/red_worker.c
> +++ b/server/red_worker.c
> @@ -6422,7 +6422,6 @@ static int red_lz4_compress_image(DisplayChannelClient *dcc, SpiceImage *dest,
>      Lz4Data *lz4_data = &worker->lz4_data;
>      Lz4EncoderContext *lz4 = worker->lz4;
>      int lz4_size = 0;
> -    int stride;
>  
>  #ifdef COMPRESS_STAT
>      stat_time_t start_time = stat_now();
> @@ -6454,20 +6453,13 @@ static int red_lz4_compress_image(DisplayChannelClient *dcc, SpiceImage *dest,
>  
>      lz4_data->data.u.lines_data.chunks = src->data;
>      lz4_data->data.u.lines_data.stride = src->stride;
> +    lz4_data->data.u.lines_data.next = 0;
> +    lz4_data->data.u.lines_data.reverse = 0;
>      lz4_data->usr.more_lines = lz4_usr_more_lines;
>  
> -    if ((src->flags & SPICE_BITMAP_FLAGS_TOP_DOWN)) {
> -        lz4_data->data.u.lines_data.next = 0;
> -        lz4_data->data.u.lines_data.reverse = 0;
> -        stride = src->stride;
> -    } else {
> -        lz4_data->data.u.lines_data.next = src->data->num_chunks - 1;
> -        lz4_data->data.u.lines_data.reverse = 1;
> -        stride = -src->stride;
> -    }
> -
> -    lz4_size = lz4_encode(lz4, src->y, stride, (uint8_t*)lz4_data->data.bufs_head->buf,
> -                          sizeof(lz4_data->data.bufs_head->buf));
> +    lz4_size = lz4_encode(lz4, src->y, src->stride, (uint8_t*)lz4_data->data.bufs_head->buf,
> +                          sizeof(lz4_data->data.bufs_head->buf),
> +                          src->flags & SPICE_BITMAP_FLAGS_TOP_DOWN);
>  
>      // the compressed buffer is bigger than the original data
>      if (lz4_size > (src->y * src->stride)) {
> -- 
> 1.9.3
> 
> _______________________________________________
> Spice-devel mailing list
> Spice-devel@xxxxxxxxxxxxxxxxxxxxx
> http://lists.freedesktop.org/mailman/listinfo/spice-devel

Attachment: pgpqOt8spH21m.pgp
Description: PGP signature

_______________________________________________
Spice-devel mailing list
Spice-devel@xxxxxxxxxxxxxxxxxxxxx
http://lists.freedesktop.org/mailman/listinfo/spice-devel

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