qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
To: "Kővágó, Zoltán" <dirty.ice.hu@gmail.com>
Cc: Markus Armbruster <armbru@redhat.com>,
	qemu-devel@nongnu.org, Gerd Hoffmann <kraxel@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v3 03/14] audio: add audiodev property to vnc and wav_capture
Date: Tue, 6 Aug 2019 10:59:15 +0100	[thread overview]
Message-ID: <20190806095915.GD3066@work-vm> (raw)
In-Reply-To: <ff28a2d4a61be1e7150556342a5fb83aa818c439.1564925486.git.DirtY.iCE.hu@gmail.com>

* Kővágó, Zoltán (dirty.ice.hu@gmail.com) wrote:
> Signed-off-by: Kővágó, Zoltán <DirtY.iCE.hu@gmail.com>
> ---
> 
> Notes:
>     Changes from v2:
>     
>     * audiodev parameter for wavcapture is now mandatory.
>     * removed some unnecessary qdict_haskey calls from hmp_wavcapture
> 
>  ui/vnc.h        |  2 ++
>  monitor/misc.c  | 22 +++++++++++-----------
>  ui/vnc.c        | 15 ++++++++++++++-
>  hmp-commands.hx | 11 ++++++-----
>  qemu-options.hx |  6 ++++++
>  5 files changed, 39 insertions(+), 17 deletions(-)

For HMP this looks reasonable


Acked-by: Dr. David Alan Gilbert <dgilbert@redhat.com>

> diff --git a/ui/vnc.h b/ui/vnc.h
> index 2f84db3142..6f54653455 100644
> --- a/ui/vnc.h
> +++ b/ui/vnc.h
> @@ -183,6 +183,8 @@ struct VncDisplay
>  #ifdef CONFIG_VNC_SASL
>      VncDisplaySASL sasl;
>  #endif
> +
> +    AudioState *audio_state;
>  };
>  
>  typedef struct VncTight {
> diff --git a/monitor/misc.c b/monitor/misc.c
> index e393333a0e..bdf857555f 100644
> --- a/monitor/misc.c
> +++ b/monitor/misc.c
> @@ -1142,21 +1142,21 @@ static void hmp_stopcapture(Monitor *mon, const QDict *qdict)
>  static void hmp_wavcapture(Monitor *mon, const QDict *qdict)
>  {
>      const char *path = qdict_get_str(qdict, "path");
> -    int has_freq = qdict_haskey(qdict, "freq");
> -    int freq = qdict_get_try_int(qdict, "freq", -1);
> -    int has_bits = qdict_haskey(qdict, "bits");
> -    int bits = qdict_get_try_int(qdict, "bits", -1);
> -    int has_channels = qdict_haskey(qdict, "nchannels");
> -    int nchannels = qdict_get_try_int(qdict, "nchannels", -1);
> +    int freq = qdict_get_try_int(qdict, "freq", 44100);
> +    int bits = qdict_get_try_int(qdict, "bits", 16);
> +    int nchannels = qdict_get_try_int(qdict, "nchannels", 2);
> +    const char *audiodev = qdict_get_str(qdict, "audiodev");
>      CaptureState *s;
> +    AudioState *as = audio_state_by_name(audiodev);
> +
> +    if (!as) {
> +        monitor_printf(mon, "Audiodev '%s' not found\n", audiodev);
> +        return;
> +    }
>  
>      s = g_malloc0 (sizeof (*s));
>  
> -    freq = has_freq ? freq : 44100;
> -    bits = has_bits ? bits : 16;
> -    nchannels = has_channels ? nchannels : 2;
> -
> -    if (wav_start_capture(NULL, s, path, freq, bits, nchannels)) {
> +    if (wav_start_capture(as, s, path, freq, bits, nchannels)) {
>          monitor_printf(mon, "Failed to add wave capture\n");
>          g_free (s);
>          return;
> diff --git a/ui/vnc.c b/ui/vnc.c
> index 140f364dda..24f9be5b5d 100644
> --- a/ui/vnc.c
> +++ b/ui/vnc.c
> @@ -1222,7 +1222,7 @@ static void audio_add(VncState *vs)
>      ops.destroy = audio_capture_destroy;
>      ops.capture = audio_capture;
>  
> -    vs->audio_cap = AUD_add_capture(NULL, &vs->as, &ops, vs);
> +    vs->audio_cap = AUD_add_capture(vs->vd->audio_state, &vs->as, &ops, vs);
>      if (!vs->audio_cap) {
>          error_report("Failed to add audio capture");
>      }
> @@ -3369,6 +3369,9 @@ static QemuOptsList qemu_vnc_opts = {
>          },{
>              .name = "non-adaptive",
>              .type = QEMU_OPT_BOOL,
> +        },{
> +            .name = "audiodev",
> +            .type = QEMU_OPT_STRING,
>          },
>          { /* end of list */ }
>      },
> @@ -3806,6 +3809,7 @@ void vnc_display_open(const char *id, Error **errp)
>      const char *saslauthz;
>      int lock_key_sync = 1;
>      int key_delay_ms;
> +    const char *audiodev;
>  
>      if (!vd) {
>          error_setg(errp, "VNC display not active");
> @@ -3991,6 +3995,15 @@ void vnc_display_open(const char *id, Error **errp)
>      }
>      vd->ledstate = 0;
>  
> +    audiodev = qemu_opt_get(opts, "audiodev");
> +    if (audiodev) {
> +        vd->audio_state = audio_state_by_name(audiodev);
> +        if (!vd->audio_state) {
> +            error_setg(errp, "Audiodev '%s' not found", audiodev);
> +            goto fail;
> +        }
> +    }
> +
>      device_id = qemu_opt_get(opts, "display");
>      if (device_id) {
>          int head = qemu_opt_get_number(opts, "head", 0);
> diff --git a/hmp-commands.hx b/hmp-commands.hx
> index bfa5681dd2..cfcc044ce4 100644
> --- a/hmp-commands.hx
> +++ b/hmp-commands.hx
> @@ -819,16 +819,17 @@ ETEXI
>  
>      {
>          .name       = "wavcapture",
> -        .args_type  = "path:F,freq:i?,bits:i?,nchannels:i?",
> -        .params     = "path [frequency [bits [channels]]]",
> +        .args_type  = "path:F,audiodev:s,freq:i?,bits:i?,nchannels:i?",
> +        .params     = "path audiodev [frequency [bits [channels]]]",
>          .help       = "capture audio to a wave file (default frequency=44100 bits=16 channels=2)",
>          .cmd        = hmp_wavcapture,
>      },
>  STEXI
> -@item wavcapture @var{filename} [@var{frequency} [@var{bits} [@var{channels}]]]
> +@item wavcapture @var{filename} @var{audiodev} [@var{frequency} [@var{bits} [@var{channels}]]]
>  @findex wavcapture
> -Capture audio into @var{filename}. Using sample rate @var{frequency}
> -bits per sample @var{bits} and number of channels @var{channels}.
> +Capture audio into @var{filename} from @var{audiodev}, using sample rate
> +@var{frequency} bits per sample @var{bits} and number of channels
> +@var{channels}.
>  
>  Defaults:
>  @itemize @minus
> diff --git a/qemu-options.hx b/qemu-options.hx
> index 9621e934c0..a308e5f5aa 100644
> --- a/qemu-options.hx
> +++ b/qemu-options.hx
> @@ -1978,6 +1978,12 @@ can help the device and guest to keep up and not lose events in case
>  events are arriving in bulk.  Possible causes for the latter are flaky
>  network connections, or scripts for automated testing.
>  
> +@item audiodev=@var{audiodev}
> +
> +Use the specified @var{audiodev} when the VNC client requests audio
> +transmission. When not using an -audiodev argument, this option must
> +be omitted, otherwise is must be present and specify a valid audiodev.
> +
>  @end table
>  ETEXI
>  
> -- 
> 2.22.0
> 
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK


  reply	other threads:[~2019-08-06  9:59 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-08-04 17:04 [Qemu-devel] [PATCH v3 00/14] Multiple simultaneous audio backends Kővágó, Zoltán
2019-08-04 17:04 ` [Qemu-devel] [PATCH v3 01/14] audio: reduce glob_audio_state usage Kővágó, Zoltán
2019-08-04 17:04 ` [Qemu-devel] [PATCH v3 02/14] audio: basic support for multi backend audio Kővágó, Zoltán
2019-08-04 17:04 ` [Qemu-devel] [PATCH v3 03/14] audio: add audiodev property to vnc and wav_capture Kővágó, Zoltán
2019-08-06  9:59   ` Dr. David Alan Gilbert [this message]
2019-08-04 17:04 ` [Qemu-devel] [PATCH v3 04/14] audio: add audiodev properties to frontends Kővágó, Zoltán
2019-08-04 17:04 ` [Qemu-devel] [PATCH v3 05/14] paaudio: prepare for multiple audiodev Kővágó, Zoltán
2019-08-04 17:04 ` [Qemu-devel] [PATCH v3 06/14] audio: audiodev= parameters no longer optional when -audiodev present Kővágó, Zoltán
2019-08-04 17:04 ` [Qemu-devel] [PATCH v3 07/14] paaudio: do not move stream when sink/source name is specified Kővágó, Zoltán
2019-08-04 17:04 ` [Qemu-devel] [PATCH v3 08/14] paaudio: properly disconnect streams in fini_* Kővágó, Zoltán
2019-08-04 17:04 ` [Qemu-devel] [PATCH v3 09/14] audio: remove audio_MIN, audio_MAX Kővágó, Zoltán
2019-08-04 17:04 ` [Qemu-devel] [PATCH v3 10/14] audio: do not run each backend in audio_run Kővágó, Zoltán
2019-08-04 17:04 ` [Qemu-devel] [PATCH v3 11/14] paaudio: fix playback glitches Kővágó, Zoltán
2019-08-04 17:04 ` [Qemu-devel] [PATCH v3 12/14] audio: remove read and write pcm_ops Kővágó, Zoltán
2019-08-04 17:04 ` [Qemu-devel] [PATCH v3 13/14] audio: use size_t where makes sense Kővágó, Zoltán
2019-08-04 17:04 ` [Qemu-devel] [PATCH v3 14/14] audio: fix memory leak reported by ASAN Kővágó, Zoltán
2019-08-04 17:23 ` [Qemu-devel] [PATCH v3 00/14] Multiple simultaneous audio backends no-reply
2019-08-13 10:21 ` Gerd Hoffmann

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=20190806095915.GD3066@work-vm \
    --to=dgilbert@redhat.com \
    --cc=armbru@redhat.com \
    --cc=dirty.ice.hu@gmail.com \
    --cc=kraxel@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).