[Spice-devel] [spice-server PATCH v1 3/12] jpeg_encoder: fix alignment warnings (convert_line)

Frediano Ziglio fziglio at redhat.com
Thu Aug 6 05:27:08 PDT 2015


> 
> As the input line could be uint8_t*, uint16_t* or uint32_t*, changing
> the default from uint8_t* to void* seems the correct choice to deal with
> upcasting warnings.
> 
> clang output:
> jpeg_encoder.c:109:26: error: cast from 'uint8_t *'
> (aka 'unsigned char *') to 'uint16_t *' (aka 'unsigned short *')
> increases required alignment from 1 to 2 [-Werror,-Wcast-align]
>   uint16_t *src_line = (uint16_t *)line;
>                        ^~~~~~~~~~~~~~~~
> 
> jpeg_encoder.c:144:26: error: cast from 'uint8_t *'
> (aka 'unsigned char *') to 'uint32_t *' (aka 'unsigned int *')
> increases required alignment from 1 to 4 [-Werror,-Wcast-align]
>   uint32_t *src_line = (uint32_t *)line;
>                        ^~~~~~~~~~~~~~~~
> ---
>  server/jpeg_encoder.c | 16 ++++++++--------
>  1 file changed, 8 insertions(+), 8 deletions(-)
> 
> diff --git a/server/jpeg_encoder.c b/server/jpeg_encoder.c
> index 01732ff..0296e9b 100644
> --- a/server/jpeg_encoder.c
> +++ b/server/jpeg_encoder.c
> @@ -35,7 +35,7 @@ typedef struct JpegEncoder {
>          int height;
>          int stride;
>          unsigned int out_size;
> -        void (*convert_line_to_RGB24) (uint8_t *line, int width, uint8_t
> **out_line);
> +        void (*convert_line_to_RGB24) (void *line, int width, uint8_t
> **out_line);
>      } cur_image;
>  } JpegEncoder;
>  
> @@ -104,9 +104,9 @@ void jpeg_encoder_destroy(JpegEncoderContext* encoder)
>      free(encoder);
>  }
>  
> -static void convert_RGB16_to_RGB24(uint8_t *line, int width, uint8_t
> **out_line)
> +static void convert_RGB16_to_RGB24(void *line, int width, uint8_t
> **out_line)
>  {
> -    uint16_t *src_line = (uint16_t *)line;
> +    uint16_t *src_line = line;
>      uint8_t *out_pix;
>      int x;
>  
> @@ -122,11 +122,11 @@ static void convert_RGB16_to_RGB24(uint8_t *line, int
> width, uint8_t **out_line)
>     }
>  }
>  
> -static void convert_BGR24_to_RGB24(uint8_t *line, int width, uint8_t
> **out_line)
> +static void convert_BGR24_to_RGB24(void *in_line, int width, uint8_t
> **out_line)
>  {
>      int x;
>      uint8_t *out_pix;
> -
> +    uint8_t *line = in_line;
>      spice_assert(out_line && *out_line);
>  
>      out_pix = *out_line;
> @@ -139,9 +139,9 @@ static void convert_BGR24_to_RGB24(uint8_t *line, int
> width, uint8_t **out_line)
>      }
>  }
>  
> -static void convert_BGRX32_to_RGB24(uint8_t *line, int width, uint8_t
> **out_line)
> +static void convert_BGRX32_to_RGB24(void *line, int width, uint8_t
> **out_line)
>  {
> -    uint32_t *src_line = (uint32_t *)line;
> +    uint32_t *src_line = line;
>      uint8_t *out_pix;
>      int x;
>  
> @@ -157,7 +157,7 @@ static void convert_BGRX32_to_RGB24(uint8_t *line, int
> width, uint8_t **out_line
>      }
>  }
>  
> -static void convert_RGB24_to_RGB24(uint8_t *line, int width, uint8_t
> **out_line)
> +static void convert_RGB24_to_RGB24(void *line, int width, uint8_t
> **out_line)
>  {
>      *out_line = line;
>  }
> --
> 2.4.3
> 

Acked-by!

Frediano


More information about the Spice-devel mailing list