Yes. It works well. 发送自 Windows 10 版邮件<https://go.microsoft.com/fwlink/?LinkId=550986>应用
________________________________ 发件人: Frediano Ziglio <fzig...@redhat.com> 发送时间: Wednesday, June 20, 2018 8:11:58 PM 收件人: 谢昆明 抄送: 谢 昆明; spice-devel@lists.freedesktop.org; Christophe Fergeau 主题: Re: 答复: [Spice-devel] 答复: how to open jpg binary file (/tmp/spice_dump/x.jpg)? Can you try this patch? diff --git a/common/canvas_base.c b/common/canvas_base.c index 957f887..ae064ca 100644 --- a/common/canvas_base.c +++ b/common/canvas_base.c @@ -438,9 +438,9 @@ static pixman_image_t *canvas_get_quic(CanvasBase *canvas, SpiceImage *image, //#define DUMP_JPEG #ifdef DUMP_JPEG -static int jpeg_id = 0; -static void dump_jpeg(uint8_t* data, int data_size) +static void dump_jpeg(SpiceChunks* data, uint32_t data_size) { + static uint32_t jpeg_id = 0; char file_str[200]; uint32_t id = ++jpeg_id; @@ -455,9 +455,13 @@ static void dump_jpeg(uint8_t* data, int data_size) return; } - fwrite(data, 1, data_size, f); + for (uint32_t n = 0; n < data->num_chunks; ++n) { + fwrite(data->chunk[n].data, 1, data->chunk[n].len, f); + } fclose(f); } +#else +static inline void dump_jpeg(SpiceChunks* data, uint32_t data_size) {} #endif static pixman_image_t *canvas_get_jpeg(CanvasBase *canvas, SpiceImage *image) @@ -486,9 +490,7 @@ static pixman_image_t *canvas_get_jpeg(CanvasBase *canvas, SpiceImage *image) canvas->jpeg->ops->decode(canvas->jpeg, dest, stride, SPICE_BITMAP_FMT_32BIT); -#ifdef DUMP_JPEG dump_jpeg(image->u.jpeg.data, image->u.jpeg.data_size); -#endif return surface; } @@ -665,9 +667,7 @@ static pixman_image_t *canvas_get_jpeg_alpha(CanvasBase *canvas, SpiceImage *ima } lz_decode(lz_data->lz, LZ_IMAGE_TYPE_XXXA, decomp_alpha_buf); -#ifdef DUMP_JPEG dump_jpeg(image->u.jpeg_alpha.data, image->u.jpeg_alpha.jpeg_size); -#endif return surface; } Frediano ________________________________ Fix bug. 发送自 Windows 10 版邮件<https://go.microsoft.com/fwlink/?LinkId=550986>应用 发件人: Frediano Ziglio<mailto:fzig...@redhat.com> 发送时间: 2018年6月20日 18:32 收件人: 谢 昆明<mailto:kunming....@hotmail.com> 抄送: spice-devel@lists.freedesktop.org<mailto:spice-devel@lists.freedesktop.org>; Christophe Fergeau<mailto:cferg...@redhat.com> 主题: Re: [Spice-devel] 答复: how to open jpg binary file (/tmp/spice_dump/x.jpg)? Yes. It is some spice code which is calling dump_jpeg. After apply this patch, jpeg file can be open by eog. The call is correct. What is wrong is dump_jpeg which should handle all chunks and not assume that pointer is raw data. Thanks for the report. What are you trying to do dumping jpeg images? Frediano 发送自 Windows 10 版邮件<https://go.microsoft.com/fwlink/?LinkId=550986>应用 发件人: Christophe Fergeau<mailto:cferg...@redhat.com> 发送时间: 2018年6月20日 17:28 收件人: 谢 昆明<mailto:kunming....@hotmail.com> 抄送: spice-devel@lists.freedesktop.org<mailto:spice-devel@lists.freedesktop.org> 主题: Re: [Spice-devel] how to open jpg binary file (/tmp/spice_dump/x.jpg)? Hey, On Wed, Jun 20, 2018 at 02:14:54AM +0000, 谢 昆明 wrote: > Hey guys. I have dump some jpg file, but I can’t open it with eog. I don't understand how this relates to spice? Is this some spice code which is calling dump_jpeg? Christophe > > > static int jpeg_id = 0; > static void dump_jpeg(uint8_t* data, int data_size) > { > char file_str[200]; > uint32_t id = ++jpeg_id; > > #ifdef WIN32 > sprintf(file_str, "c:\\tmp\\spice_dump\\%u.jpg", id); > #else > sprintf(file_str, "/tmp/spice_dump/%u.jpg", id); > #endif > > FILE *f = fopen(file_str, "wb"); > if (!f) { > return; > } > > fwrite(data, 1, data_size, f); > fclose(f); > } > > > 发送自 Windows 10 版邮件<https://go.microsoft.com/fwlink/?LinkId=550986>应用 >
_______________________________________________ Spice-devel mailing list Spice-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/spice-devel