On Tue, 2016-06-07 at 11:17 +0100, Frediano Ziglio wrote: > Signed-off-by: Frediano Ziglio <fziglio@xxxxxxxxxx> > --- > server/dcc-encoders.c | 16 ++++++++-------- > server/dcc-encoders.h | 5 +++++ > server/dcc.c | 28 ++++++++++++++++------------ > server/dcc.h | 3 --- > 4 files changed, 29 insertions(+), 23 deletions(-) > > diff --git a/server/dcc-encoders.c b/server/dcc-encoders.c > index 015f677..7d74ca3 100644 > --- a/server/dcc-encoders.c > +++ b/server/dcc-encoders.c > @@ -360,14 +360,14 @@ static void dcc_init_glz_data(DisplayChannelClient *dcc) > dcc->glz_data.usr.free_image = glz_usr_free_image; > } > > -static void dcc_init_jpeg(DisplayChannelClient *dcc) > +static void dcc_init_jpeg(EncodersData *enc) function names again (dcc_ vs encoders_data_) > { > - dcc->jpeg_data.usr.more_space = jpeg_usr_more_space; > - dcc->jpeg_data.usr.more_lines = jpeg_usr_more_lines; > + enc->jpeg_data.usr.more_space = jpeg_usr_more_space; > + enc->jpeg_data.usr.more_lines = jpeg_usr_more_lines; > > - dcc->jpeg = jpeg_encoder_create(&dcc->jpeg_data.usr); > + enc->jpeg = jpeg_encoder_create(&enc->jpeg_data.usr); > > - if (!dcc->jpeg) { > + if (!enc->jpeg) { > spice_critical("create jpeg encoder failed"); > } > } > @@ -405,7 +405,7 @@ void dcc_encoders_init(DisplayChannelClient *dcc) > dcc_init_glz_data(dcc); > dcc_init_quic(enc); > dcc_init_lz(enc); > - dcc_init_jpeg(dcc); > + dcc_init_jpeg(enc); > #ifdef USE_LZ4 > dcc_init_lz4(dcc); > #endif > @@ -422,8 +422,8 @@ void dcc_encoders_free(DisplayChannelClient *dcc) > enc->quic = NULL; > lz_destroy(enc->lz); > enc->lz = NULL; > - jpeg_encoder_destroy(dcc->jpeg); > - dcc->jpeg = NULL; > + jpeg_encoder_destroy(enc->jpeg); > + enc->jpeg = NULL; > #ifdef USE_LZ4 > lz4_encoder_destroy(dcc->lz4); > dcc->lz4 = NULL; > diff --git a/server/dcc-encoders.h b/server/dcc-encoders.h > index f008bf6..9978a9c 100644 > --- a/server/dcc-encoders.h > +++ b/server/dcc-encoders.h > @@ -168,6 +168,11 @@ struct EncodersData { > > LzData lz_data; > LzContext *lz; > + > + int jpeg_quality; > + > + JpegData jpeg_data; > + JpegEncoderContext *jpeg; > }; > > typedef struct compress_send_data_t { > diff --git a/server/dcc.c b/server/dcc.c > index 7bdb2bd..89035be 100644 > --- a/server/dcc.c > +++ b/server/dcc.c > @@ -379,7 +379,7 @@ DisplayChannelClient *dcc_new(DisplayChannel *display, > dcc->jpeg_state = jpeg_state; > dcc->zlib_glz_state = zlib_glz_state; > // TODO: tune quality according to bandwidth > - dcc->jpeg_quality = 85; > + dcc->encoders.jpeg_quality = 85; > > size_t stream_buf_size; > stream_buf_size = 32*1024; > @@ -784,13 +784,15 @@ glz: > return TRUE; > } > > -static int dcc_compress_image_jpeg(DisplayChannelClient *dcc, SpiceImage > *dest, > - SpiceBitmap *src, compress_send_data_t* > o_comp_data) > +static int dcc_compress_image_jpeg(EncodersData *enc, SpiceImage *dest, > + SpiceBitmap *src, compress_send_data_t* > o_comp_data, > + stat_info_t *jpeg_stats, // FIXME put all > stats in a structure > + stat_info_t *jpeg_alpha_stats) Stats change to separate commit? Also change function name to encoders_data_ > { > - JpegData *jpeg_data = &dcc->jpeg_data; > - LzData *lz_data = &dcc->encoders.lz_data; > - JpegEncoderContext *jpeg = dcc->jpeg; > - LzContext *lz = dcc->encoders.lz; > + JpegData *jpeg_data = &enc->jpeg_data; > + LzData *lz_data = &enc->lz_data; > + JpegEncoderContext *jpeg = enc->jpeg; > + LzContext *lz = enc->lz; > volatile JpegEncoderImageType jpeg_in_type; > int jpeg_size = 0; > volatile int has_alpha = FALSE; > @@ -800,7 +802,7 @@ static int dcc_compress_image_jpeg(DisplayChannelClient > *dcc, SpiceImage *dest, > int stride; > uint8_t *lz_out_start_byte; > stat_start_time_t start_time; > - stat_start_time_init(&start_time, &DCC_TO_DC(dcc)->jpeg_alpha_stat); > + stat_start_time_init(&start_time, jpeg_alpha_stats); > > #ifdef COMPRESS_DEBUG > spice_info("JPEG compress"); > @@ -846,7 +848,7 @@ static int dcc_compress_image_jpeg(DisplayChannelClient > *dcc, SpiceImage *dest, > jpeg_data->data.u.lines_data.reverse = 1; > stride = -src->stride; > } > - jpeg_size = jpeg_encode(jpeg, dcc->jpeg_quality, jpeg_in_type, > + jpeg_size = jpeg_encode(jpeg, enc->jpeg_quality, jpeg_in_type, > src->x, src->y, NULL, > 0, stride, jpeg_data->data.bufs_head->buf.bytes, > sizeof(jpeg_data->data.bufs_head->buf)); > @@ -864,7 +866,7 @@ static int dcc_compress_image_jpeg(DisplayChannelClient > *dcc, SpiceImage *dest, > o_comp_data->comp_buf_size = jpeg_size; > o_comp_data->is_lossy = TRUE; > > - stat_compress_add(&DCC_TO_DC(dcc)->jpeg_stat, start_time, src->stride > * src->y, > + stat_compress_add(jpeg_stats, start_time, src->stride * src->y, > o_comp_data->comp_buf_size); > return TRUE; > } > @@ -904,7 +906,7 @@ static int dcc_compress_image_jpeg(DisplayChannelClient > *dcc, SpiceImage *dest, > o_comp_data->comp_buf = jpeg_data->data.bufs_head; > o_comp_data->comp_buf_size = jpeg_size + alpha_lz_size; > o_comp_data->is_lossy = TRUE; > - stat_compress_add(&DCC_TO_DC(dcc)->jpeg_alpha_stat, start_time, src- > >stride * src->y, > + stat_compress_add(jpeg_alpha_stats, start_time, src->stride * src->y, > o_comp_data->comp_buf_size); > return TRUE; > } > @@ -1063,7 +1065,9 @@ int dcc_compress_image(DisplayChannelClient *dcc, > case SPICE_IMAGE_COMPRESSION_QUIC: > if (can_lossy && display_channel->enable_jpeg && > (src->format != SPICE_BITMAP_FMT_RGBA || > !bitmap_has_extra_stride(src))) { > - success = dcc_compress_image_jpeg(dcc, dest, src, o_comp_data); > + success = dcc_compress_image_jpeg(&dcc->encoders, dest, src, > o_comp_data, > + &display_channel->jpeg_stat, > + &display_channel- > >jpeg_alpha_stat); > break; > } > success = dcc_compress_image_quic(&dcc->encoders, dest, src, > o_comp_data, &display_channel->quic_stat); > diff --git a/server/dcc.h b/server/dcc.h > index 532ce7b..b200d50 100644 > --- a/server/dcc.h > +++ b/server/dcc.h > @@ -60,14 +60,11 @@ struct DisplayChannelClient { > SpiceImageCompression image_compression; > spice_wan_compression_t jpeg_state; > spice_wan_compression_t zlib_glz_state; > - int jpeg_quality; > > EncodersData encoders; > > int zlib_level; > > - JpegData jpeg_data; > - JpegEncoderContext *jpeg; > #ifdef USE_LZ4 > Lz4Data lz4_data; > Lz4EncoderContext *lz4; Reviewed-by: Jonathon Jongsma <jjongsma@xxxxxxxxxx> _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel