mirror of
https://gitlab.uni-freiburg.de/opensourcevdi/spice
synced 2025-12-27 15:45:54 +00:00
Encapsulate jpeg information in ImageEncoders structure
Signed-off-by: Frediano Ziglio <fziglio@redhat.com> Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
This commit is contained in:
parent
cff7950aa3
commit
7b6cb37cc0
@ -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 image_encoders_init_jpeg(ImageEncoders *enc)
|
||||
{
|
||||
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);
|
||||
image_encoders_init_quic(enc);
|
||||
image_encoders_init_lz(enc);
|
||||
dcc_init_jpeg(dcc);
|
||||
image_encoders_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;
|
||||
|
||||
@ -167,6 +167,11 @@ struct ImageEncoders {
|
||||
|
||||
LzData lz_data;
|
||||
LzContext *lz;
|
||||
|
||||
int jpeg_quality;
|
||||
|
||||
JpegData jpeg_data;
|
||||
JpegEncoderContext *jpeg;
|
||||
};
|
||||
|
||||
typedef struct compress_send_data_t {
|
||||
|
||||
@ -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;
|
||||
@ -787,9 +787,9 @@ glz:
|
||||
static int dcc_compress_image_jpeg(DisplayChannelClient *dcc, SpiceImage *dest,
|
||||
SpiceBitmap *src, compress_send_data_t* o_comp_data)
|
||||
{
|
||||
JpegData *jpeg_data = &dcc->jpeg_data;
|
||||
JpegData *jpeg_data = &dcc->encoders.jpeg_data;
|
||||
LzData *lz_data = &dcc->encoders.lz_data;
|
||||
JpegEncoderContext *jpeg = dcc->jpeg;
|
||||
JpegEncoderContext *jpeg = dcc->encoders.jpeg;
|
||||
LzContext *lz = dcc->encoders.lz;
|
||||
volatile JpegEncoderImageType jpeg_in_type;
|
||||
int jpeg_size = 0;
|
||||
@ -846,7 +846,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, dcc->encoders.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));
|
||||
|
||||
@ -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;
|
||||
|
||||
ImageEncoders encoders;
|
||||
|
||||
int zlib_level;
|
||||
|
||||
JpegData jpeg_data;
|
||||
JpegEncoderContext *jpeg;
|
||||
#ifdef USE_LZ4
|
||||
Lz4Data lz4_data;
|
||||
Lz4EncoderContext *lz4;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user