mirror of
https://gitlab.uni-freiburg.de/opensourcevdi/spice
synced 2025-12-26 22:48:19 +00:00
Encapsulate zlib information in ImageEncoders structure
This change is less clean the other similar patches as zlib and glz require more steps. Signed-off-by: Frediano Ziglio <fziglio@redhat.com> Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
This commit is contained in:
parent
21a90ae986
commit
c2bc754559
@ -386,14 +386,14 @@ static inline void image_encoders_init_lz4(ImageEncoders *enc)
|
||||
}
|
||||
#endif
|
||||
|
||||
static void dcc_init_zlib(DisplayChannelClient *dcc)
|
||||
static void image_encoders_init_zlib(ImageEncoders *enc)
|
||||
{
|
||||
dcc->zlib_data.usr.more_space = zlib_usr_more_space;
|
||||
dcc->zlib_data.usr.more_input = zlib_usr_more_input;
|
||||
enc->zlib_data.usr.more_space = zlib_usr_more_space;
|
||||
enc->zlib_data.usr.more_input = zlib_usr_more_input;
|
||||
|
||||
dcc->zlib = zlib_encoder_create(&dcc->zlib_data.usr, ZLIB_DEFAULT_COMPRESSION_LEVEL);
|
||||
enc->zlib = zlib_encoder_create(&enc->zlib_data.usr, ZLIB_DEFAULT_COMPRESSION_LEVEL);
|
||||
|
||||
if (!dcc->zlib) {
|
||||
if (!enc->zlib) {
|
||||
spice_critical("create zlib encoder failed");
|
||||
}
|
||||
}
|
||||
@ -409,10 +409,10 @@ void dcc_encoders_init(DisplayChannelClient *dcc)
|
||||
#ifdef USE_LZ4
|
||||
image_encoders_init_lz4(enc);
|
||||
#endif
|
||||
dcc_init_zlib(dcc);
|
||||
image_encoders_init_zlib(enc);
|
||||
|
||||
// todo: tune level according to bandwidth
|
||||
dcc->zlib_level = ZLIB_DEFAULT_COMPRESSION_LEVEL;
|
||||
enc->zlib_level = ZLIB_DEFAULT_COMPRESSION_LEVEL;
|
||||
}
|
||||
|
||||
void dcc_encoders_free(DisplayChannelClient *dcc)
|
||||
@ -428,8 +428,8 @@ void dcc_encoders_free(DisplayChannelClient *dcc)
|
||||
lz4_encoder_destroy(enc->lz4);
|
||||
enc->lz4 = NULL;
|
||||
#endif
|
||||
zlib_encoder_destroy(dcc->zlib);
|
||||
dcc->zlib = NULL;
|
||||
zlib_encoder_destroy(enc->zlib);
|
||||
enc->zlib = NULL;
|
||||
}
|
||||
|
||||
/* Remove from the to_free list and the instances_list.
|
||||
|
||||
@ -177,6 +177,11 @@ struct ImageEncoders {
|
||||
Lz4Data lz4_data;
|
||||
Lz4EncoderContext *lz4;
|
||||
#endif
|
||||
|
||||
int zlib_level;
|
||||
|
||||
ZlibData zlib_data;
|
||||
ZlibEncoder *zlib;
|
||||
};
|
||||
|
||||
typedef struct compress_send_data_t {
|
||||
|
||||
@ -746,14 +746,14 @@ static int dcc_compress_image_glz(DisplayChannelClient *dcc,
|
||||
goto glz;
|
||||
}
|
||||
stat_start_time_init(&start_time, &display_channel->zlib_glz_stat);
|
||||
zlib_data = &dcc->zlib_data;
|
||||
zlib_data = &dcc->encoders.zlib_data;
|
||||
|
||||
encoder_data_init(&zlib_data->data);
|
||||
|
||||
zlib_data->data.u.compressed_data.next = glz_data->data.bufs_head;
|
||||
zlib_data->data.u.compressed_data.size_left = glz_size;
|
||||
|
||||
zlib_size = zlib_encode(dcc->zlib, dcc->zlib_level,
|
||||
zlib_size = zlib_encode(dcc->encoders.zlib, dcc->encoders.zlib_level,
|
||||
glz_size, zlib_data->data.bufs_head->buf.bytes,
|
||||
sizeof(zlib_data->data.bufs_head->buf));
|
||||
|
||||
|
||||
@ -63,11 +63,6 @@ struct DisplayChannelClient {
|
||||
|
||||
ImageEncoders encoders;
|
||||
|
||||
int zlib_level;
|
||||
|
||||
ZlibData zlib_data;
|
||||
ZlibEncoder *zlib;
|
||||
|
||||
int expect_init;
|
||||
|
||||
PixmapCache *pixmap_cache;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user