[Spice-devel] [PATCH] mjpeg_encoder: allocate "row" on demand
Alon Levy
alevy at redhat.com
Wed Jul 6 04:04:24 PDT 2011
On Wed, Jul 06, 2011 at 12:32:53PM +0200, Christophe Fergeau wrote:
> It's not used when we use jpeg-turbo colorspaces, so it's better
> to allocate it when we know we'll need it rather than always
> allocating it even if it won't be used.
Just one thing - you're turning an abort to a return FALSE. have you tested
this? does it get handled correctly all the way up?
> ---
> server/mjpeg_encoder.c | 16 ++++++++--------
> 1 files changed, 8 insertions(+), 8 deletions(-)
>
> diff --git a/server/mjpeg_encoder.c b/server/mjpeg_encoder.c
> index 8b323ed..7351dae 100644
> --- a/server/mjpeg_encoder.c
> +++ b/server/mjpeg_encoder.c
> @@ -27,7 +27,6 @@
> struct MJpegEncoder {
> int width;
> int height;
> - int stride;
> uint8_t *row;
> int first_frame;
> int quality;
> @@ -48,15 +47,8 @@ MJpegEncoder *mjpeg_encoder_new(int width, int height)
> enc->first_frame = TRUE;
> enc->width = width;
> enc->height = height;
> - enc->stride = width * 3;
> enc->quality = 70;
> - if (enc->stride < width) {
> - abort();
> - }
> - enc->row = spice_malloc(enc->stride);
> -
> enc->cinfo.err = jpeg_std_error(&enc->jerr);
> -
> jpeg_create_compress(&enc->cinfo);
>
> return enc;
> @@ -240,6 +232,14 @@ int mjpeg_encoder_start_frame(MJpegEncoder *encoder, SpiceBitmapFmt format,
> return FALSE;
> }
>
> + if ((encoder->pixel_converter != NULL) && (encoder->row == NULL)) {
> + unsigned int stride = encoder->width * 3;
> + if (stride < encoder->width) {
> + return FALSE;
> + }
> + encoder->row = spice_malloc(stride);
> + }
> +
> jpeg_mem_dest(&encoder->cinfo, dest, dest_len);
>
> encoder->cinfo.image_width = encoder->width;
> --
> 1.7.6
>
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/spice-devel
More information about the Spice-devel
mailing list