All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Cc: Yanfeng Liu <yfliu2008@qq.com>,
	kraxel@redhat.com, qemu-devel@nongnu.org,
	Yanfeng Liu <p-liuyanfeng9@xiaomi.com>
Subject: Re: [PATCH v1] audio/virtio-snd: fix latency calc
Date: Tue, 3 Feb 2026 10:52:06 -0500	[thread overview]
Message-ID: <20260203105150-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <CAAjaMXYV5M-Zkg=1ycopGJBRpcuR5HHx6Cp0FVkws4+QR0VEug@mail.gmail.com>

On Sat, Nov 15, 2025 at 12:08:07PM +0200, Manos Pitsidianakis wrote:
> On Fri, Nov 14, 2025 at 11:35 AM Yanfeng Liu <yfliu2008@qq.com> wrote:
> >
> > Media players needs meaningful latency_bytes update but it is
> > zero now most of the time. This adds stream-wise latency_bytes
> > calculation so that to improve the situation.
> >
> > Signed-off-by: Yanfeng Liu <p-liuyanfeng9@xiaomi.com>
> > ---

Manos what do you want to do with this patch?

> 
> Thanks for this patch. The virtio spec doesn't adequately explain what
> latency_bytes means, could you explain what it does and why it's
> needed? And also what behavior in media players this patch fixes?
> 
> Thanks again!
> 
> >  hw/audio/virtio-snd.c         | 12 +++++++++++-
> >  include/hw/audio/virtio-snd.h |  1 +
> >  2 files changed, 12 insertions(+), 1 deletion(-)
> >
> > diff --git a/hw/audio/virtio-snd.c b/hw/audio/virtio-snd.c
> > index 9101560f38..ed0422b45a 100644
> > --- a/hw/audio/virtio-snd.c
> > +++ b/hw/audio/virtio-snd.c
> > @@ -431,6 +431,7 @@ static uint32_t virtio_snd_pcm_prepare(VirtIOSound *s, uint32_t stream_id)
> >          stream->id = stream_id;
> >          stream->pcm = s->pcm;
> >          stream->s = s;
> > +        stream->latency_bytes = 0;
> >          qemu_mutex_init(&stream->queue_mutex);
> >          QSIMPLEQ_INIT(&stream->queue);
> >
> > @@ -899,6 +900,7 @@ static void virtio_snd_handle_tx_xfer(VirtIODevice *vdev, VirtQueue *vq)
> >              buffer->vq = vq;
> >              buffer->size = size;
> >              buffer->offset = 0;
> > +            stream->latency_bytes += size;
> >
> >              QSIMPLEQ_INSERT_TAIL(&stream->queue, buffer, entry);
> >          }
> > @@ -1112,12 +1114,19 @@ error_cleanup:
> >      virtio_snd_unrealize(dev);
> >  }
> >
> > +static inline void update_latency(VirtIOSoundPCMStream *s, size_t used)
> > +{
> > +    s->latency_bytes = s->latency_bytes > used ?
> > +                       s->latency_bytes - used : 0;
> > +}
> > +
> >  static inline void return_tx_buffer(VirtIOSoundPCMStream *stream,
> >                                      VirtIOSoundPCMBuffer *buffer)
> >  {
> >      virtio_snd_pcm_status resp = { 0 };
> >      resp.status = cpu_to_le32(VIRTIO_SND_S_OK);
> > -    resp.latency_bytes = cpu_to_le32((uint32_t)buffer->size);
> > +    update_latency(stream, buffer->size);
> > +    resp.latency_bytes = cpu_to_le32(stream->latency_bytes);
> >      iov_from_buf(buffer->elem->in_sg,
> >                   buffer->elem->in_num,
> >                   0,
> > @@ -1178,6 +1187,7 @@ static void virtio_snd_pcm_out_cb(void *data, int available)
> >                  buffer->size -= size;
> >                  buffer->offset += size;
> >                  available -= size;
> > +                update_latency(stream, size);
> >                  if (buffer->size < 1) {
> >                      return_tx_buffer(stream, buffer);
> >                      break;
> > diff --git a/include/hw/audio/virtio-snd.h b/include/hw/audio/virtio-snd.h
> > index c176066584..9560bac8b1 100644
> > --- a/include/hw/audio/virtio-snd.h
> > +++ b/include/hw/audio/virtio-snd.h
> > @@ -150,6 +150,7 @@ struct VirtIOSoundPCMStream {
> >      } voice;
> >      QemuMutex queue_mutex;
> >      bool active;
> > +    uint32_t latency_bytes;
> >      QSIMPLEQ_HEAD(, VirtIOSoundPCMBuffer) queue;
> >  };
> >
> > --
> > 2.34.1
> >



  parent reply	other threads:[~2026-02-03 15:52 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-11-14  9:34 [PATCH v1] audio/virtio-snd: fix latency calc Yanfeng Liu
2025-11-15 10:08 ` Manos Pitsidianakis
2025-11-17  2:16   ` yf
2026-02-03 15:52   ` Michael S. Tsirkin [this message]
2026-02-04 10:18     ` Manos Pitsidianakis

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=20260203105150-mutt-send-email-mst@kernel.org \
    --to=mst@redhat.com \
    --cc=kraxel@redhat.com \
    --cc=manos.pitsidianakis@linaro.org \
    --cc=p-liuyanfeng9@xiaomi.com \
    --cc=qemu-devel@nongnu.org \
    --cc=yfliu2008@qq.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.