All of lore.kernel.org
 help / color / mirror / Atom feed
From: Markus Armbruster <armbru@redhat.com>
To: Kshitij Suri <kshitij.suri@nutanix.com>
Cc: soham.ghosh@nutanix.com, thuth@redhat.com,
	prerna.saxena@nutanix.com, qemu-devel@nongnu.org,
	dgilbert@redhat.com, kraxel@redhat.com,
	prachatos.mitra@nutanix.com, eblake@redhat.com
Subject: Re: [PATCH v2 2/2] Added parameter to take screenshot with screendump as PNG.
Date: Fri, 11 Mar 2022 13:20:48 +0100	[thread overview]
Message-ID: <871qz88yu7.fsf@pond.sub.org> (raw)
In-Reply-To: <20220301064424.136234-2-kshitij.suri@nutanix.com> (Kshitij Suri's message of "Tue, 1 Mar 2022 06:44:24 +0000")

Kshitij Suri <kshitij.suri@nutanix.com> writes:

> Currently screendump only supports PPM format, which is un-compressed and not
> standard. Added a "format" parameter to qemu monitor screendump capabilites
> to support PNG image capture using libpng. The param was added in QAPI schema
> of screendump present in ui.json along with png_save() function which converts
> pixman_image to PNG. HMP command equivalent was also modified to support the
> feature.
>
> Example usage:
> { "execute": "screendump", "arguments": { "filename": "/tmp/image",
> "format":"png" } }
>
> Resolves: https://gitlab.com/qemu-project/qemu/-/issues/718
>
> Signed-off-by: Kshitij Suri <kshitij.suri@nutanix.com>
> ---

[...]

> diff --git a/monitor/hmp-cmds.c b/monitor/hmp-cmds.c
> index 8c384dc1b2..9a640146eb 100644
> --- a/monitor/hmp-cmds.c
> +++ b/monitor/hmp-cmds.c
> @@ -1677,9 +1677,26 @@ hmp_screendump(Monitor *mon, const QDict *qdict)
>      const char *filename = qdict_get_str(qdict, "filename");
>      const char *id = qdict_get_try_str(qdict, "device");
>      int64_t head = qdict_get_try_int(qdict, "head", 0);
> +    const char *input_format  = qdict_get_str(qdict, "format");
>      Error *err = NULL;
> +    ImageFormat format;
>  
> -    qmp_screendump(filename, id != NULL, id, id != NULL, head, &err);
> +    int val = qapi_enum_parse(&ImageFormat_lookup, input_format, -1, &err);
> +    if (val < 0) {
> +        goto end;
> +    }
> +
> +    switch (val) {
> +    case IMAGE_FORMAT_PNG:
> +        format = IMAGE_FORMAT_PNG;
> +        break;
> +    default:
> +        format = IMAGE_FORMAT_PPM;
> +    }
> +
> +    qmp_screendump(filename, id != NULL, id, id != NULL, head,
> +                   input_format != NULL, format, &err);
> +end:
>      hmp_handle_error(mon, err);
>  }
>  
> diff --git a/qapi/ui.json b/qapi/ui.json
> index 9354f4c467..6aa0dd7c1b 100644
> --- a/qapi/ui.json
> +++ b/qapi/ui.json
> @@ -73,12 +73,27 @@
>  ##
>  { 'command': 'expire_password', 'data': {'protocol': 'str', 'time': 'str'} }
>  
> +##
> +# @ImageFormat:
> +#
> +# Available list of supported types.

This is just a hair better than "Lorem ipsum" :)

Suggest: Supported image format types.

> +#
> +# @png: PNG format
> +#
> +# @ppm: PPM format
> +#
> +# Since: 7.0
> +#
> +##
> +{ 'enum': 'ImageFormat',
> +  'data': ['ppm', 'png'] }
> +
>  ##
>  # @screendump:
>  #
> -# Write a PPM of the VGA screen to a file.
> +# Write a screenshot of the VGA screen to a file.

Is "VGA screen" accurate?  Or does this work for other displays, too?

>  #
> -# @filename: the path of a new PPM file to store the image
> +# @filename: the path of a new file to store the image
>  #
>  # @device: ID of the display device that should be dumped. If this parameter
>  #          is missing, the primary display will be used. (Since 2.12)
> @@ -87,6 +102,9 @@
>  #        parameter is missing, head #0 will be used. Also note that the head
>  #        can only be specified in conjunction with the device ID. (Since 2.12)
>  #
> +# @format: image format for screendump is specified. ppm is the set as the
> +#          default format. (Since 7.0)

I figure you mean "is set as the default".  Suggest to replace the
sentence by "(default: ppm)".

> +#
>  # Returns: Nothing on success
>  #
>  # Since: 0.14
> @@ -99,7 +117,8 @@
>  #
>  ##
>  { 'command': 'screendump',
> -  'data': {'filename': 'str', '*device': 'str', '*head': 'int'},
> +  'data': {'filename': 'str', '*device': 'str', '*head': 'int',
> +           '*format': 'ImageFormat'},
>    'coroutine': true }
>  
>  ##

[...]



  parent reply	other threads:[~2022-03-11 12:24 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-01  6:44 [PATCH v2 1/2] Replacing CONFIG_VNC_PNG with CONFIG_PNG Kshitij Suri
2022-03-01  6:44 ` [PATCH v2 2/2] Added parameter to take screenshot with screendump as PNG Kshitij Suri
2022-03-07 16:41   ` Kshitij Suri
2022-03-11 12:20   ` Markus Armbruster [this message]
2022-03-15  4:36     ` Kshitij Suri
2022-03-15 10:06       ` Markus Armbruster
2022-03-15 10:19         ` Daniel P. Berrangé
2022-03-15 13:23           ` Markus Armbruster
2022-03-16 18:11           ` Kshitij Suri
2022-03-07 16:40 ` [PATCH v2 1/2] Replacing CONFIG_VNC_PNG with CONFIG_PNG Kshitij Suri
  -- strict thread matches above, loose matches on Subject: below --
2022-03-28 16:54 Kshitij Suri
2022-03-28 16:54 ` [PATCH v2 2/2] Added parameter to take screenshot with screendump as PNG Kshitij Suri
2022-03-29  6:42   ` Markus Armbruster
2022-03-29  7:06     ` Kshitij Suri
2022-03-22 10:49 [PATCH v2 1/2] Replacing CONFIG_VNC_PNG with CONFIG_PNG Kshitij Suri
2022-03-22 10:49 ` [PATCH v2 2/2] Added parameter to take screenshot with screendump as PNG Kshitij Suri
2022-03-28  9:50   ` Kshitij Suri
2022-03-28  9:52   ` Daniel P. Berrangé
2022-03-28  9:56     ` Kshitij Suri
2022-03-22  8:18 [PATCH v2 1/2] Replacing CONFIG_VNC_PNG with CONFIG_PNG Kshitij Suri
2022-03-22  8:18 ` [PATCH v2 2/2] Added parameter to take screenshot with screendump as PNG Kshitij Suri
2022-03-22  9:47   ` Daniel P. Berrangé
2022-03-22  9:56     ` Kshitij Suri
2022-03-22 10:15     ` Markus Armbruster
2022-03-22 10:19       ` Kshitij Suri
2022-02-28  5:22 [PATCH v2 1/2] Replacing CONFIG_VNC_PNG with CONFIG_PNG Kshitij Suri
2022-02-28  5:22 ` [PATCH v2 2/2] Added parameter to take screenshot with screendump as PNG Kshitij Suri

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=871qz88yu7.fsf@pond.sub.org \
    --to=armbru@redhat.com \
    --cc=dgilbert@redhat.com \
    --cc=eblake@redhat.com \
    --cc=kraxel@redhat.com \
    --cc=kshitij.suri@nutanix.com \
    --cc=prachatos.mitra@nutanix.com \
    --cc=prerna.saxena@nutanix.com \
    --cc=qemu-devel@nongnu.org \
    --cc=soham.ghosh@nutanix.com \
    --cc=thuth@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.