[Spice-devel] [PATCH spice v2 2/4] dcc-send: Use dcc_compress_image to compress image
Victor Toso
lists at victortoso.com
Mon Jan 18 03:28:17 PST 2016
Hi,
On Fri, Jan 15, 2016 at 05:11:33PM +0100, Pavel Grunt wrote:
> ---
> server/dcc-send.c | 44 +++-----------------------------------------
> 1 file changed, 3 insertions(+), 41 deletions(-)
>
> diff --git a/server/dcc-send.c b/server/dcc-send.c
> index c3f79ef..58e654e 100644
> --- a/server/dcc-send.c
> +++ b/server/dcc-send.c
> @@ -1920,20 +1920,14 @@ static void red_marshall_image(RedChannelClient *rcc, SpiceMarshaller *m, ImageI
> DisplayChannelClient *dcc = RCC_TO_DCC(rcc);
> DisplayChannel *display = DCC_TO_DC(dcc);
> SpiceImage red_image;
> - RedWorker *worker;
> SpiceBitmap bitmap;
> SpiceChunks *chunks;
> QRegion *surface_lossy_region;
> - int comp_succeeded = FALSE;
> - int lossy_comp = FALSE;
> - int quic_comp = FALSE;
> - SpiceImageCompression comp_mode;
> SpiceMsgDisplayDrawCopy copy;
> SpiceMarshaller *src_bitmap_out, *mask_bitmap_out;
> SpiceMarshaller *bitmap_palette_out, *lzplt_palette_out;
>
> spice_assert(rcc && display && item);
> - worker = display->common.worker;
>
> QXL_SET_IMAGE_ID(&red_image, QXL_IMAGE_GROUP_RED, display_channel_generate_uid(display));
> red_image.descriptor.type = SPICE_IMAGE_TYPE_BITMAP;
> @@ -1981,44 +1975,12 @@ static void red_marshall_image(RedChannelClient *rcc, SpiceMarshaller *m, ImageI
>
> compress_send_data_t comp_send_data = {0};
>
> - comp_mode = dcc->image_compression;
> -
> - if (((comp_mode == SPICE_IMAGE_COMPRESSION_AUTO_LZ) ||
> - (comp_mode == SPICE_IMAGE_COMPRESSION_AUTO_GLZ)) && !bitmap_has_extra_stride(&bitmap)) {
> -
> - if (bitmap_fmt_has_graduality(item->image_format)) {
> - BitmapGradualType grad_level;
> -
> - grad_level = bitmap_get_graduality_level(&bitmap);
> - if (grad_level == BITMAP_GRADUAL_HIGH) {
> - // if we use lz for alpha, the stride can't be extra
> - lossy_comp = display->enable_jpeg && item->can_lossy;
> - quic_comp = TRUE;
> - }
> - }
> - } else if (comp_mode == SPICE_IMAGE_COMPRESSION_QUIC) {
> - quic_comp = TRUE;
> - }
> -
> - uint32_t groupid = red_worker_get_memslot(worker)->internal_groupslot_id;
> -
> - if (lossy_comp) {
> - comp_succeeded = dcc_compress_image_jpeg(dcc, &red_image, &bitmap, &comp_send_data, groupid);
> - } else if (quic_comp) {
> - comp_succeeded = dcc_compress_image_quic(dcc, &red_image, &bitmap, &comp_send_data, groupid);
> -#ifdef USE_LZ4
> - } else if (comp_mode == SPICE_IMAGE_COMPRESSION_LZ4 &&
> - bitmap_fmt_is_rgb(bitmap.format) &&
> - red_channel_client_test_remote_cap(&dcc->common.base,
> - SPICE_DISPLAY_CAP_LZ4_COMPRESSION)) {
> - comp_succeeded = dcc_compress_image_lz4(dcc, &red_image, &bitmap, &comp_send_data, groupid);
> -#endif
> - } else if (comp_mode != SPICE_IMAGE_COMPRESSION_OFF) {
> - comp_succeeded = dcc_compress_image_lz(dcc, &red_image, &bitmap, &comp_send_data, groupid);
> - }
> + int comp_succeeded = dcc_compress_image(dcc, &red_image, &bitmap, NULL, item->can_lossy, &comp_send_data);
>
> surface_lossy_region = &dcc->surface_client_lossy_region[item->surface_id];
> if (comp_succeeded) {
> + int lossy_comp = red_image.descriptor.type == SPICE_IMAGE_TYPE_JPEG ||
> + red_image.descriptor.type == SPICE_IMAGE_TYPE_JPEG_ALPHA;
This is not explained.. so, dcc_compress_image takes it->can_lossy but
you need to verify it in the end. Maybe a helper function would be more
clear?
> spice_marshall_Image(src_bitmap_out, &red_image,
> &bitmap_palette_out, &lzplt_palette_out);
>
> --
> 2.5.0
>
> _______________________________________________
> 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