Hi Francois, On Tue, 2016-06-07 at 15:58 +0200, Francois Gouget wrote: > Video frames correspond to QXL_DRAW_COPY operations where the frame area > is defined by the SpiceCopy.src_area field. Do you think it can have an effect on the bug: https://bugs.freedesktop.org/show_bug.cgi?id=94372 Thanks, Pavel > > Signed-off-by: Francois Gouget <fgouget@xxxxxxxxxxxxxxx> > --- > server/mjpeg-encoder.c | 14 ++++++-------- > 1 file changed, 6 insertions(+), 8 deletions(-) > > diff --git a/server/mjpeg-encoder.c b/server/mjpeg-encoder.c > index e3646db..7dcea50 100644 > --- a/server/mjpeg-encoder.c > +++ b/server/mjpeg-encoder.c > @@ -706,7 +706,7 @@ static void mjpeg_encoder_adjust_fps(MJpegEncoder > *encoder, uint64_t now) > */ > static int mjpeg_encoder_start_frame(MJpegEncoder *encoder, > SpiceBitmapFmt format, > - int width, int height, > + const SpiceRect *src, > uint8_t **dest, size_t *dest_len, > uint32_t frame_mm_time) > { > @@ -777,10 +777,12 @@ static int mjpeg_encoder_start_frame(MJpegEncoder > *encoder, > return VIDEO_ENCODER_FRAME_UNSUPPORTED; > } > > + encoder->cinfo.image_width = src->right - src->left; > + encoder->cinfo.image_height = src->bottom - src->top; > if (encoder->pixel_converter != NULL) { > - unsigned int stride = width * 3; > + JDIMENSION stride = encoder->cinfo.image_width * 3; > /* check for integer overflow */ > - if (stride < width) { > + if (stride < encoder->cinfo.image_width) { > return VIDEO_ENCODER_FRAME_UNSUPPORTED; > } > if (encoder->row_size < stride) { > @@ -790,9 +792,6 @@ static int mjpeg_encoder_start_frame(MJpegEncoder > *encoder, > } > > spice_jpeg_mem_dest(&encoder->cinfo, dest, dest_len); > - > - encoder->cinfo.image_width = width; > - encoder->cinfo.image_height = height; > jpeg_set_defaults(&encoder->cinfo); > encoder->cinfo.dct_method = JDCT_IFAST; > quality = mjpeg_quality_samples[encoder->rate_control.quality_id]; > @@ -935,8 +934,7 @@ static int mjpeg_encoder_encode_frame(VideoEncoder > *video_encoder, > { > MJpegEncoder *encoder = (MJpegEncoder*)video_encoder; > > - int ret = mjpeg_encoder_start_frame(encoder, bitmap->format, > - width, height, > + int ret = mjpeg_encoder_start_frame(encoder, bitmap->format, src, > outbuf, outbuf_size, > frame_mm_time); > if (ret != VIDEO_ENCODER_FRAME_ENCODE_DONE) { _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel