diff options
-rw-r--r-- | server/jpeg_encoder.c | 16 | ||||
-rw-r--r-- | server/mjpeg_encoder.c | 10 |
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; |