[Spice-devel] 答复: 答复: how to open jpg binary file (/tmp/spice_dump/x.jpg)?

Frediano Ziglio fziglio at redhat.com
Wed Jun 20 12:11:58 UTC 2018


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 

----- Original Message -----

> Fix bug.

> 发送自 Windows 10 版 邮件 应用

> 发件人 : Frediano Ziglio
> 发送时间 : 2018 年 6 月 20 日 18:32
> 收件人 : 谢 昆明
> 抄送 : spice-devel at lists.freedesktop.org ; Christophe Fergeau
> 主题 : 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 版 邮件 应用
> 

> > 发件人 : Christophe Fergeau
> 
> > 发送时间 : 2018 年 6 月 20 日 17:28
> 
> > 收件人 : 谢 昆明
> 
> > 抄送 : spice-devel at 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> 应用
> 
> >
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/spice-devel/attachments/20180620/f5766d21/attachment.html>


More information about the Spice-devel mailing list