spice图像压缩简介
2013-09-06 11:08
106 查看
目前的spice图像压缩主要采用了quic,glz和jpeg。quic和glz是无损压缩算法,quic主要用于照片,glz用于人工图像,jpeg也主要用于照片压缩但是是有损的。jpeg能节省50%的带宽,glz只能节省20%,但是jpeg会带来更大的开销,所以不能都使用jpeg进行压缩。
spice官网对于广域网支持的介绍:http://spice-space.org/page/Features/WanSupport
spice图像压缩的流程:
qxl首先通过gdi接口获取到刷新的区域图像,然后传送给spice-server,spice-server获取到图像后通过
static inline void marshall_qxl_drawable(RedChannelClient *rcc,SpiceMarshaller *m, DrawablePipeItem *dpi)
red_marshall_stream_data(rcc, m, item)
static void red_init(RedWorker *worker, WorkerInitData *init_data)
如果想采用jpeg压缩可以直接更改为worker->jpeg_state =SPICE_WAN_COMPRESSION_ALWAYS;或者在Reds.c里把
spice_wan_compression_t jpeg_state = SPICE_WAN_COMPRESSION_AUTO;更改为
spice_wan_compression_t jpeg_state = SPICE_WAN_COMPRESSION_ALWAYS;
spice-server中图像的最终压缩都是在
static inline int red_compress_image(DisplayChannelClient *dcc,SpiceImage *dest, SpiceBitmap *src, Drawable *drawable,int can_lossy,compress_send_data_t* o_comp_data)
spice-server通过tcp传输给spice-gtk客户端,客户端会通过数据流来判断出是采用何种压缩算法并采用相应的算法进行decode。
spice官网对于广域网支持的介绍:http://spice-space.org/page/Features/WanSupport
spice图像压缩的流程:
qxl首先通过gdi接口获取到刷新的区域图像,然后传送给spice-server,spice-server获取到图像后通过
static inline void marshall_qxl_drawable(RedChannelClient *rcc,SpiceMarshaller *m, DrawablePipeItem *dpi)
static inline void marshall_qxl_drawable(RedChannelClient *rcc,SpiceMarshaller *m, DrawablePipeItem *dpi)函数先判断图像是应该当做视频处理还是图像处理,如果是视频就调用
red_marshall_stream_data(rcc, m, item)
red_marshall_stream_data(rcc, m, item)如果是图像先判断是否采用jpeg压缩,是否采用jpeg压缩是在
static void red_init(RedWorker *worker, WorkerInitData *init_data)
static void red_init(RedWorker *worker, WorkerInitData *init_data)里设置,worker->jpeg_state = init_data->jpeg_state;
如果想采用jpeg压缩可以直接更改为worker->jpeg_state =SPICE_WAN_COMPRESSION_ALWAYS;或者在Reds.c里把
spice_wan_compression_t jpeg_state = SPICE_WAN_COMPRESSION_AUTO;更改为
spice_wan_compression_t jpeg_state = SPICE_WAN_COMPRESSION_ALWAYS;
spice-server中图像的最终压缩都是在
static inline int red_compress_image(DisplayChannelClient *dcc,SpiceImage *dest, SpiceBitmap *src, Drawable *drawable,int can_lossy,compress_send_data_t* o_comp_data)
static inline int red_compress_image(DisplayChannelClient *dcc,SpiceImage *dest, SpiceBitmap *src, Drawable *drawable,int can_lossy,compress_send_data_t* o_comp_data)在这个函数里会根据image_compression,图像的大小,图像的格式来选择相应的压缩算法。
spice-server通过tcp传输给spice-gtk客户端,客户端会通过数据流来判断出是采用何种压缩算法并采用相应的算法进行decode。
相关文章推荐
- spice图像压缩简介
- spice图像压缩简介
- spice 图像压缩算法相关代码逻辑流程
- spice 图像压缩算法相关代码逻辑流程
- python 原始相素特征和Pca压缩重建进行图像识别 识别性能可视化
- BMP位图图像格式简介
- Java图片缩略图裁剪水印缩放旋转压缩转格式-Thumbnailator图像处理
- 纽约大学提出端到端优化图像压缩方法,全面超越JPEG 2000 | ICLR 2017
- android Shader类简介_渲染图像
- Android Bitmap压缩图像的正确方法(compress的误区)
- Spdy协议、WebP图像压缩技术、Protocol buffers协议、快牙
- 多帧Dicom 压缩图像解码的性能优化
- rrd,img和ige格式的图像文件关系简介
- 《高效学习OpenGL》 之 压缩纹理图像 glGetTexLevelParameter(),glCompressedTexImage2D()
- Huffman图像压缩
- ios中图像进行压缩方法汇总
- 黑白图像压缩
- 小波在图像视频压缩领域中的应用分析【转贴】
- 【前端优化】你想不到的压缩方法:将javascript文件压缩成PNG图像存储
- OpenCV 编程简介(矩阵/图像/视频的基本读写操作)