summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--server/jpeg_encoder.c16
-rw-r--r--server/mjpeg_encoder.c10
2 files changed, 14 insertions, 12 deletions
diff --git a/server/jpeg_encoder.c b/server/jpeg_encoder.c
index 01732ffa..0296e9b6 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;
}
diff --git a/server/mjpeg_encoder.c b/server/mjpeg_encoder.c
index 9a41ef3a..4b803a9b 100644
--- a/server/mjpeg_encoder.c
+++ b/server/mjpeg_encoder.c
@@ -162,7 +162,7 @@ struct MJpegEncoder {
struct jpeg_error_mgr jerr;
unsigned int bytes_per_pixel; /* bytes per pixel of the input buffer */
- void (*pixel_converter)(uint8_t *src, uint8_t *dest);
+ void (*pixel_converter)(void *src, uint8_t *dest);
MJpegEncoderRateControl rate_control;
MJpegEncoderRateControlCbs cbs;
@@ -238,15 +238,16 @@ uint8_t mjpeg_encoder_get_bytes_per_pixel(MJpegEncoder *encoder)
#ifndef JCS_EXTENSIONS
/* Pixel conversion routines */
-static void pixel_rgb24bpp_to_24(uint8_t *src, uint8_t *dest)
+static void pixel_rgb24bpp_to_24(void *src_ptr, uint8_t *dest)
{
+ uint8_t *src = src_ptr;
/* libjpegs stores rgb, spice/win32 stores bgr */
*dest++ = src[2]; /* red */
*dest++ = src[1]; /* green */
*dest++ = src[0]; /* blue */
}
-static void pixel_rgb32bpp_to_24(uint8_t *src, uint8_t *dest)
+static void pixel_rgb32bpp_to_24(void *src, uint8_t *dest)
{
uint32_t pixel = *(uint32_t *)src;
*dest++ = (pixel >> 16) & 0xff;
@@ -255,7 +256,7 @@ static void pixel_rgb32bpp_to_24(uint8_t *src, uint8_t *dest)
}
#endif
-static void pixel_rgb16bpp_to_24(uint8_t *src, uint8_t *dest)
+static void pixel_rgb16bpp_to_24(void *src, uint8_t *dest)
{
uint16_t pixel = *(uint16_t *)src;
*dest++ = ((pixel >> 7) & 0xf8) | ((pixel >> 12) & 0x7);
@@ -842,6 +843,7 @@ int mjpeg_encoder_encode_scanline(MJpegEncoder *encoder, uint8_t *src_pixels,
if (encoder->pixel_converter) {
unsigned int x;
for (x = 0; x < image_width; x++) {
+ /* src_pixels is expected to be 4 bytes aligned */
encoder->pixel_converter(src_pixels, row);
row += 3;
src_pixels += encoder->bytes_per_pixel;