qemu-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-commits] [qemu/qemu] cc9913: MAINTAINERS: add myself to ui/ and au


From: Peter Maydell
Subject: [Qemu-commits] [qemu/qemu] cc9913: MAINTAINERS: add myself to ui/ and audio/
Date: Mon, 06 Mar 2023 06:11:37 -0800

  Branch: refs/heads/staging
  Home:   https://github.com/qemu/qemu
  Commit: cc99139bae83cdc6116d6435b594837d54bd035c
      
https://github.com/qemu/qemu/commit/cc99139bae83cdc6116d6435b594837d54bd035c
  Author: Marc-André Lureau <marcandre.lureau@redhat.com>
  Date:   2023-03-06 (Mon, 06 Mar 2023)

  Changed paths:
    M MAINTAINERS

  Log Message:
  -----------
  MAINTAINERS: add myself to ui/ and audio/

Helping out with patch review & queue handling.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-Id: <20230207085610.1033536-1-marcandre.lureau@redhat.com>


  Commit: b9ae74e2e497154f77b109743c77fa97c71d71c1
      
https://github.com/qemu/qemu/commit/b9ae74e2e497154f77b109743c77fa97c71d71c1
  Author: Volker Rümelin <vr_qemu@t-online.de>
  Date:   2023-03-06 (Mon, 06 Mar 2023)

  Changed paths:
    M audio/audio.c
    M audio/audio_template.h

  Log Message:
  -----------
  audio: log unimplemented audio device sample rates

Some emulated audio devices allow guests to select very low
sample rates that the audio subsystem doesn't support. The lowest
supported sample rate depends on the audio backend used and in
most cases can be changed with various -audiodev arguments. Until
now, the audio_bug function emits an error message similar to the
following error message

A bug was just triggered in audio_calloc
Save all your work and restart without audio
I am sorry
Context:
audio_pcm_sw_alloc_resources_out passed invalid arguments to
 audio_calloc
nmemb=0 size=16 (len=0)
audio: Could not allocate buffer for `ac97.po' (0 samples)

and the audio subsystem continues without sound for the affected
device.

The fact that the selected sample rate is not supported is not a
guest error. Instead of displaying an error message, the missing
audio support is now logged. Simply continuing without sound is
correct, since the audio stream won't transport anything
reasonable at such high resample ratios anyway.

The AUD_open_* functions return NULL like before. The opened
audio device will not be registered in the audio subsystem and
consequently the audio frontend callback functions will not be
called. The AUD_read and AUD_write functions return early in this
case. This is necessary because, for example, the Sound Blaster 16
emulation calls AUD_write from the DMA callback function.

Acked-by: Christian Schoenebeck <qemu_oss@crudebyte.com>
Signed-off-by: Volker Rümelin <vr_qemu@t-online.de>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Message-Id: <20230121094735.11644-1-vr_qemu@t-online.de>


  Commit: 90394fe15f95f58ad34684541cd480422b31d0af
      
https://github.com/qemu/qemu/commit/90394fe15f95f58ad34684541cd480422b31d0af
  Author: Volker Rümelin <vr_qemu@t-online.de>
  Date:   2023-03-06 (Mon, 06 Mar 2023)

  Changed paths:
    M audio/audio_template.h

  Log Message:
  -----------
  audio: don't show unnecessary error messages

Let the audio_pcm_create_voice_pair_* functions handle error
reporting. This avoids an additional error message in case
the guest selected an unimplemented sample rate.

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Volker Rümelin <vr_qemu@t-online.de>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Message-Id: <20230121094735.11644-2-vr_qemu@t-online.de>


  Commit: b637a61c6f27f8023905223314fe18819540162f
      
https://github.com/qemu/qemu/commit/b637a61c6f27f8023905223314fe18819540162f
  Author: Volker Rümelin <vr_qemu@t-online.de>
  Date:   2023-03-06 (Mon, 06 Mar 2023)

  Changed paths:
    M audio/audio_template.h

  Log Message:
  -----------
  audio: rename hardware store to backend

Use a consistent friendly name for the HWVoiceOut and HWVoiceIn
structures.

Reviewed-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: Volker Rümelin <vr_qemu@t-online.de>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-Id: <20230121094735.11644-3-vr_qemu@t-online.de>


  Commit: f8f8a8ac57723a0c3c06d18ed69e1cd209db5309
      
https://github.com/qemu/qemu/commit/f8f8a8ac57723a0c3c06d18ed69e1cd209db5309
  Author: Volker Rümelin <vr_qemu@t-online.de>
  Date:   2023-03-06 (Mon, 06 Mar 2023)

  Changed paths:
    M audio/audio_int.h

  Log Message:
  -----------
  audio: remove unused #define AUDIO_STRINGIFY

Remove the unused #define AUDIO_STRINGIFY. It was last used before
commit 470bcabd8f ("audio: Replace AUDIO_FUNC with __func__").

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: Volker Rümelin <vr_qemu@t-online.de>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Message-Id: <20230121094735.11644-4-vr_qemu@t-online.de>


  Commit: 25bf0c2d35f7caa2cab212340aea95e8245eae28
      
https://github.com/qemu/qemu/commit/25bf0c2d35f7caa2cab212340aea95e8245eae28
  Author: Volker Rümelin <vr_qemu@t-online.de>
  Date:   2023-03-06 (Mon, 06 Mar 2023)

  Changed paths:
    M audio/audio.c
    M audio/audio_template.h
    M audio/mixeng.c

  Log Message:
  -----------
  audio/mixeng: use g_new0() instead of audio_calloc()

Replace audio_calloc() with the equivalent g_new0().

With a n_structs argument of 1, g_new0() never returns NULL.
Also remove the unnecessary NULL checks.

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Volker Rümelin <vr_qemu@t-online.de>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Message-Id: <20230121094735.11644-5-vr_qemu@t-online.de>


  Commit: d1def19fa3689127f551f8740e5c8b3b743dc33e
      
https://github.com/qemu/qemu/commit/d1def19fa3689127f551f8740e5c8b3b743dc33e
  Author: Volker Rümelin <vr_qemu@t-online.de>
  Date:   2023-03-06 (Mon, 06 Mar 2023)

  Changed paths:
    M audio/alsaaudio.c

  Log Message:
  -----------
  audio/alsaaudio: use g_new0() instead of audio_calloc()

Replace audio_calloc() with the equivalent g_new0().

The value of the g_new0() argument count is >= 1, which means
g_new0() will never return NULL. Also remove the unnecessary
NULL check.

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Volker Rümelin <vr_qemu@t-online.de>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Message-Id: <20230121094735.11644-6-vr_qemu@t-online.de>


  Commit: 3724ab3b34ff3430f315272429188a1b3dfdd247
      
https://github.com/qemu/qemu/commit/3724ab3b34ff3430f315272429188a1b3dfdd247
  Author: Volker Rümelin <vr_qemu@t-online.de>
  Date:   2023-03-06 (Mon, 06 Mar 2023)

  Changed paths:
    M audio/audio_int.h
    M audio/audio_template.h

  Log Message:
  -----------
  audio/audio_template: use g_malloc0() to replace audio_calloc()

Use g_malloc0() as a direct replacement for audio_calloc().

Since the type of the parameter n_bytes of the function g_malloc0()
is unsigned, the type of the variables voice_size_out and
voice_size_in has been changed to size_t. This means that the
function argument no longer has to be checked for negative values.

Signed-off-by: Volker Rümelin <vr_qemu@t-online.de>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Message-Id: <20230121094735.11644-7-vr_qemu@t-online.de>


  Commit: c6b69a814a2dd9f8da08d55f36ed73597ee0c612
      
https://github.com/qemu/qemu/commit/c6b69a814a2dd9f8da08d55f36ed73597ee0c612
  Author: Volker Rümelin <vr_qemu@t-online.de>
  Date:   2023-03-06 (Mon, 06 Mar 2023)

  Changed paths:
    M audio/audio_template.h

  Log Message:
  -----------
  audio/audio_template: use g_new0() to replace audio_calloc()

Replace audio_calloc() with the equivalent g_new0().

With a n_structs argument >= 1, g_new0() never returns NULL.
Also remove the unnecessary NULL checks.

Signed-off-by: Volker Rümelin <vr_qemu@t-online.de>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Message-Id: <20230121094735.11644-8-vr_qemu@t-online.de>


  Commit: 2d2ccb6060a12380644d2027252bc2e0ae145daf
      
https://github.com/qemu/qemu/commit/2d2ccb6060a12380644d2027252bc2e0ae145daf
  Author: Volker Rümelin <vr_qemu@t-online.de>
  Date:   2023-03-06 (Mon, 06 Mar 2023)

  Changed paths:
    M audio/audio.c
    M audio/audio_int.h

  Log Message:
  -----------
  audio: remove audio_calloc() function

Now that the last call site of audio_calloc() was removed, remove
the unused audio_calloc() function.

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Volker Rümelin <vr_qemu@t-online.de>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Message-Id: <20230121094735.11644-9-vr_qemu@t-online.de>


  Commit: 467447320a1c28448e48bdcbfa939654729b28d1
      
https://github.com/qemu/qemu/commit/467447320a1c28448e48bdcbfa939654729b28d1
  Author: Volker Rümelin <vr_qemu@t-online.de>
  Date:   2023-03-06 (Mon, 06 Mar 2023)

  Changed paths:
    M audio/alsaaudio.c

  Log Message:
  -----------
  alsaaudio: change default playback settings

The currently used default playback settings in the ALSA audio
backend are a bit unfortunate. With a few emulated audio devices,
audio playback does not work properly. Here is a short part of
the debug log while audio is playing (elapsed time in seconds).

audio: Elapsed since last alsa run (running): 0.046244
audio: Elapsed since last alsa run (running): 0.023137
audio: Elapsed since last alsa run (running): 0.023170
audio: Elapsed since last alsa run (running): 0.023650
audio: Elapsed since last alsa run (running): 0.060802
audio: Elapsed since last alsa run (running): 0.031931

For some audio devices the time of more than 23ms between updates
is too long.

Set the period time to 5.8ms so that the maximum time between
two updates typically does not exceed 11ms. This roughly matches
the 10ms period time when doing playback with the audio timer.
After this patch the debug log looks like this.

audio: Elapsed since last alsa run (running): 0.011919
audio: Elapsed since last alsa run (running): 0.005788
audio: Elapsed since last alsa run (running): 0.005995
audio: Elapsed since last alsa run (running): 0.011069
audio: Elapsed since last alsa run (running): 0.005901
audio: Elapsed since last alsa run (running): 0.006084

Acked-by: Christian Schoenebeck <qemu_oss@crudebyte.com>
Signed-off-by: Volker Rümelin <vr_qemu@t-online.de>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Message-Id: <20230121094735.11644-10-vr_qemu@t-online.de>


  Commit: 5140ad8279c746182c80fa867e0c3674250df5bc
      
https://github.com/qemu/qemu/commit/5140ad8279c746182c80fa867e0c3674250df5bc
  Author: Volker Rümelin <vr_qemu@t-online.de>
  Date:   2023-03-06 (Mon, 06 Mar 2023)

  Changed paths:
    M audio/alsaaudio.c

  Log Message:
  -----------
  alsaaudio: reintroduce default recording settings

Audio recording with ALSA default settings currently doesn't
work. The debug log shows updates every 0.75s and 1.5s.

audio: Elapsed since last alsa run (running): 0.743030
audio: Elapsed since last alsa run (running): 1.486048
audio: Elapsed since last alsa run (running): 0.743008
audio: Elapsed since last alsa run (running): 1.485878
audio: Elapsed since last alsa run (running): 1.486040
audio: Elapsed since last alsa run (running): 1.485886

The time between updates should be in the 10ms range. Audio
recording with ALSA has the same timing contraints as playback.
Reintroduce the default recording settings and use the same
default settings for recording as for playback.

The term "reintroduce" is correct because commit a93f328177
("alsaaudio: port to -audiodev config") removed the default
settings for recording.

Signed-off-by: Volker Rümelin <vr_qemu@t-online.de>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Message-Id: <20230121094735.11644-11-vr_qemu@t-online.de>


  Commit: 8dbd3d1795da6f39e90a911e9acaae74c9ff120d
      
https://github.com/qemu/qemu/commit/8dbd3d1795da6f39e90a911e9acaae74c9ff120d
  Author: Volker Rümelin <vr_qemu@t-online.de>
  Date:   2023-03-06 (Mon, 06 Mar 2023)

  Changed paths:
    M audio/audio.c
    M audio/audio_int.h
    M audio/audio_template.h

  Log Message:
  -----------
  audio: change type of mix_buf and conv_buf

Change the type of mix_buf in struct HWVoiceOut and conv_buf
in struct HWVoiceIn from STSampleBuffer * to STSampleBuffer.
However, a buffer pointer is still needed. For this reason in
struct STSampleBuffer samples[] is changed to *buffer.

This is a preparation for the next patch. The next patch will
add this line, which is not possible with the current struct
STSampleBuffer definition.

+        sw->resample_buf.buffer = hw->mix_buf.buffer + rpos2;

There are no functional changes.

Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Volker Rümelin <vr_qemu@t-online.de>
Message-Id: <20230224190555.7409-1-vr_qemu@t-online.de>


  Commit: 2c3f9a0a92ac98c31d501c2a73119853cb6739f1
      
https://github.com/qemu/qemu/commit/2c3f9a0a92ac98c31d501c2a73119853cb6739f1
  Author: Volker Rümelin <vr_qemu@t-online.de>
  Date:   2023-03-06 (Mon, 06 Mar 2023)

  Changed paths:
    M audio/audio.c
    M audio/audio_int.h
    M audio/audio_template.h

  Log Message:
  -----------
  audio: change type and name of the resample buffer

Change the type of the resample buffer from struct st_sample *
to STSampleBuffer. Also change the name from buf to resample_buf
for better readability.

The new variables resample_buf.size and resample_buf.pos will be
used after the next patches. There is no functional change.

Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Volker Rümelin <vr_qemu@t-online.de>
Message-Id: <20230224190555.7409-2-vr_qemu@t-online.de>


  Commit: 8933882da9c63a0b60706828e11f3c09e2a903c7
      
https://github.com/qemu/qemu/commit/8933882da9c63a0b60706828e11f3c09e2a903c7
  Author: Volker Rümelin <vr_qemu@t-online.de>
  Date:   2023-03-06 (Mon, 06 Mar 2023)

  Changed paths:
    M audio/rate_template.h

  Log Message:
  -----------
  audio: make the resampling code greedy

Read the maximum possible number of audio frames instead of the
minimum necessary number of frames when the audio stream is
downsampled and the output buffer is limited. This makes the
function symmetrical to upsampling when the input buffer is
limited. The maximum possible number of frames is written here.

With this change it's easier to calculate the exact number of
audio frames the resample function will read or write. These two
functions will be introduced later.

Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Acked-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Volker Rümelin <vr_qemu@t-online.de>
Message-Id: <20230224190555.7409-3-vr_qemu@t-online.de>


  Commit: 8a81abeeb2e17630c366fccbd99ce20eac328819
      
https://github.com/qemu/qemu/commit/8a81abeeb2e17630c366fccbd99ce20eac328819
  Author: Volker Rümelin <vr_qemu@t-online.de>
  Date:   2023-03-06 (Mon, 06 Mar 2023)

  Changed paths:
    M audio/audio.c

  Log Message:
  -----------
  audio: replace the resampling loop in audio_pcm_sw_write()

Replace the resampling loop in audio_pcm_sw_write() with the new
function audio_pcm_sw_resample_out(). Unlike the old resample
loop the new function will try to consume input frames even if
the output buffer is full. This is necessary when downsampling
to avoid reading less audio frames than calculated in advance.
The loop was unrolled to avoid complicated loop control conditions
in this case.

Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Acked-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Volker Rümelin <vr_qemu@t-online.de>
Message-Id: <20230224190555.7409-4-vr_qemu@t-online.de>


  Commit: b8fc5638788d2f1200e0db2c1575e37be5e474f9
      
https://github.com/qemu/qemu/commit/b8fc5638788d2f1200e0db2c1575e37be5e474f9
  Author: Volker Rümelin <vr_qemu@t-online.de>
  Date:   2023-03-06 (Mon, 06 Mar 2023)

  Changed paths:
    M audio/audio.c

  Log Message:
  -----------
  audio: remove sw == NULL check

All call sites of audio_pcm_sw_write() guarantee that sw is not
NULL. Remove the unnecessary NULL check.

Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Volker Rümelin <vr_qemu@t-online.de>
Message-Id: <20230224190555.7409-5-vr_qemu@t-online.de>


  Commit: d5647bd95831d9c98284033bd992f0a8b6deb103
      
https://github.com/qemu/qemu/commit/d5647bd95831d9c98284033bd992f0a8b6deb103
  Author: Volker Rümelin <vr_qemu@t-online.de>
  Date:   2023-03-06 (Mon, 06 Mar 2023)

  Changed paths:
    M audio/audio.c

  Log Message:
  -----------
  audio: rename variables in audio_pcm_sw_write()

The audio_pcm_sw_write() function uses a lot of very unspecific
variable names. Rename them for better readability.

ret => total_in
total => total_out
size => buf_len
hwsamples => hw->mix_buf.size
samples => frames_in_max

Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Volker Rümelin <vr_qemu@t-online.de>
Message-Id: <20230224190555.7409-6-vr_qemu@t-online.de>


  Commit: 671cca352075c9651e5c2e64bb0d2c70465082a3
      
https://github.com/qemu/qemu/commit/671cca352075c9651e5c2e64bb0d2c70465082a3
  Author: Volker Rümelin <vr_qemu@t-online.de>
  Date:   2023-03-06 (Mon, 06 Mar 2023)

  Changed paths:
    M audio/audio.c

  Log Message:
  -----------
  audio: don't misuse audio_pcm_sw_write()

The audio_pcm_sw_write() function is intended to convert a
PCM audio stream to the internal representation, adjust the
volume, and then mix it with the other audio streams with a
possibly changed sample rate in mix_buf. In order for the
audio_capture_mix_and_clear() function to use audio_pcm_sw_write(),
it must bypass the first two tasks of audio_pcm_sw_write().

Since patch "audio: split out the resampling loop in
audio_pcm_sw_write()" this is no longer necessary, because now
the audio_pcm_sw_resample_out() function can be used instead of
audio_pcm_sw_write().

Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Acked-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Volker Rümelin <vr_qemu@t-online.de>
Message-Id: <20230224190555.7409-7-vr_qemu@t-online.de>


  Commit: 1fe3cae39f059c9fc2010e3c51c0bbd696cbf880
      
https://github.com/qemu/qemu/commit/1fe3cae39f059c9fc2010e3c51c0bbd696cbf880
  Author: Volker Rümelin <vr_qemu@t-online.de>
  Date:   2023-03-06 (Mon, 06 Mar 2023)

  Changed paths:
    M audio/audio.c

  Log Message:
  -----------
  audio: remove unused noop_conv() function

The function audio_capture_mix_and_clear() no longer uses
audio_pcm_sw_write() to resample audio frames from one internal
buffer to another. For this reason, the noop_conv() function is
now unused. Remove it.

Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Volker Rümelin <vr_qemu@t-online.de>
Message-Id: <20230224190555.7409-8-vr_qemu@t-online.de>


  Commit: 1a01df3db89010d40eb43889c3272d864b3b9430
      
https://github.com/qemu/qemu/commit/1a01df3db89010d40eb43889c3272d864b3b9430
  Author: Volker Rümelin <vr_qemu@t-online.de>
  Date:   2023-03-06 (Mon, 06 Mar 2023)

  Changed paths:
    M audio/audio.c
    M audio/mixeng.c
    M audio/mixeng.h

  Log Message:
  -----------
  audio: make playback packet length calculation exact

Introduce the new function st_rate_frames_in() to calculate the
exact number of audio input frames needed to get a given number
of audio output frames. The exact number of frames depends only
on the difference of opos - ipos and the number of output frames.
When downsampling, this function returns the maximum number of
input frames needed.

This new function replaces the audio_frontend_frames_out() function,
which calculated the average number of input frames rounded down
to the nearest integer. Because audio_frontend_frames_out() also
limited the number of input frames to the size of the resample
buffer, st_rate_frames_in() is not a direct replacement and two
additional MIN() functions are needed. One to prevent resample
buffer overflows and one to limit the available bytes for the audio
frontends.

After this patch the audio packet length calculation for playback is
exact. When upsampling, it's still possible that the audio frontends
can't write the last audio frame. This will be fixed later.

Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Signed-off-by: Volker Rümelin <vr_qemu@t-online.de>
Message-Id: <20230224190555.7409-9-vr_qemu@t-online.de>


  Commit: 1c49c5f19e53cf29ae3356c0f0b3b124d44a3664
      
https://github.com/qemu/qemu/commit/1c49c5f19e53cf29ae3356c0f0b3b124d44a3664
  Author: Volker Rümelin <vr_qemu@t-online.de>
  Date:   2023-03-06 (Mon, 06 Mar 2023)

  Changed paths:
    M audio/audio.c

  Log Message:
  -----------
  audio: replace the resampling loop in audio_pcm_sw_read()

Replace the resampling loop in audio_pcm_sw_read() with the new
function audio_pcm_sw_resample_in(). Unlike the old resample
loop the new function will try to consume input frames even if
the output buffer is full. This is necessary when downsampling
to avoid reading less audio frames than calculated in advance.
The loop was unrolled to avoid complicated loop control conditions
in this case.

Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Acked-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Volker Rümelin <vr_qemu@t-online.de>
Message-Id: <20230224190555.7409-10-vr_qemu@t-online.de>


  Commit: fbde1edf06dad792ef3e9f51e3f52a49669bdd40
      
https://github.com/qemu/qemu/commit/fbde1edf06dad792ef3e9f51e3f52a49669bdd40
  Author: Volker Rümelin <vr_qemu@t-online.de>
  Date:   2023-03-06 (Mon, 06 Mar 2023)

  Changed paths:
    M audio/audio.c

  Log Message:
  -----------
  audio: rename variables in audio_pcm_sw_read()

The audio_pcm_sw_read() function uses a few very unspecific
variable names. Rename them for better readability.

ret => total_out
total => total_in
size => buf_len
samples => frames_out_max

Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Volker Rümelin <vr_qemu@t-online.de>
Message-Id: <20230224190555.7409-11-vr_qemu@t-online.de>


  Commit: a9ea567873ba8d532520f194413ff28f37065c00
      
https://github.com/qemu/qemu/commit/a9ea567873ba8d532520f194413ff28f37065c00
  Author: Volker Rümelin <vr_qemu@t-online.de>
  Date:   2023-03-06 (Mon, 06 Mar 2023)

  Changed paths:
    M audio/audio.c
    M audio/mixeng.c
    M audio/mixeng.h

  Log Message:
  -----------
  audio: make recording packet length calculation exact

Introduce the new function st_rate_frames_out() to calculate the
exact number of audio output frames the resampling code can
generate from a given number of audio input frames. When upsampling,
this function returns the maximum number of output frames.

This new function replaces the audio_frontend_frames_in()
function, which calculated the average number of output frames
rounded down to the nearest integer. The audio_frontend_frames_in()
function was additionally used to limit the number of output frames
to the resample buffer size. In audio_pcm_sw_read() the variable
resample_buf.size replaces the open coded audio_frontend_frames_in()
function. In audio_run_in() an additional MIN() function is
necessary.

After this patch the audio packet length calculation for audio
recording is exact.

Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Signed-off-by: Volker Rümelin <vr_qemu@t-online.de>
Message-Id: <20230224190555.7409-12-vr_qemu@t-online.de>


  Commit: e1e6a6fcc9921a76a32109af515146f85ccc5f84
      
https://github.com/qemu/qemu/commit/e1e6a6fcc9921a76a32109af515146f85ccc5f84
  Author: Volker Rümelin <vr_qemu@t-online.de>
  Date:   2023-03-06 (Mon, 06 Mar 2023)

  Changed paths:
    M audio/audio.c
    M audio/audio_template.h

  Log Message:
  -----------
  audio: handle leftover audio frame from upsampling

Upsampling may leave one remaining audio frame in the input
buffer. The emulated audio playback devices are currently
resposible to write this audio frame again in the next write
cycle. Push that task down to audio_pcm_sw_write.

This is another step towards an audio callback interface that
guarantees that when audio frontends are told they can write
n audio frames, they can actually do so.

Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Acked-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Volker Rümelin <vr_qemu@t-online.de>
Message-Id: <20230224190555.7409-13-vr_qemu@t-online.de>


  Commit: 148392abef4ed3591675fc8b07cc3063a3369a7b
      
https://github.com/qemu/qemu/commit/148392abef4ed3591675fc8b07cc3063a3369a7b
  Author: Volker Rümelin <vr_qemu@t-online.de>
  Date:   2023-03-06 (Mon, 06 Mar 2023)

  Changed paths:
    M audio/audio_template.h

  Log Message:
  -----------
  audio/audio_template: substitute sw->hw with hw

Substitute sw->hw with hw in the audio_pcm_sw_alloc_resources_*
functions.

Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Volker Rümelin <vr_qemu@t-online.de>
Message-Id: <20230224190555.7409-14-vr_qemu@t-online.de>


  Commit: 2f886a34bb7e6f6fcf39d64829f4499476f26dba
      
https://github.com/qemu/qemu/commit/2f886a34bb7e6f6fcf39d64829f4499476f26dba
  Author: Volker Rümelin <vr_qemu@t-online.de>
  Date:   2023-03-06 (Mon, 06 Mar 2023)

  Changed paths:
    M audio/audio.c
    M audio/audio_int.h
    M audio/audio_template.h

  Log Message:
  -----------
  audio: remove sw->ratio

Simplify the resample buffer size calculation.

For audio playback we have
sw->ratio = ((int64_t)sw->hw->info.freq << 32) / sw->info.freq;
samples = ((int64_t)sw->HWBUF.size << 32) / sw->ratio;

This can be simplified to
samples = muldiv64(sw->HWBUF.size, sw->info.freq, sw->hw->info.freq);

For audio recording we have
sw->ratio = ((int64_t)sw->info.freq << 32) / sw->hw->info.freq;
samples = (int64_t)sw->HWBUF.size * sw->ratio >> 32;

This can be simplified to
samples = muldiv64(sw->HWBUF.size, sw->info.freq, sw->hw->info.freq);

With hw = sw->hw this becomes in both cases
samples = muldiv64(HWBUF.size, sw->info.freq, hw->info.freq);

Now that sw->ratio is no longer needed, remove sw->ratio.

Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Volker Rümelin <vr_qemu@t-online.de>
Message-Id: <20230224190555.7409-15-vr_qemu@t-online.de>


  Commit: 817fd33836e73812df2f1907612b57750fcb9491
      
https://github.com/qemu/qemu/commit/817fd33836e73812df2f1907612b57750fcb9491
  Author: Peter Maydell <peter.maydell@linaro.org>
  Date:   2023-03-06 (Mon, 06 Mar 2023)

  Changed paths:
    M MAINTAINERS
    M audio/alsaaudio.c
    M audio/audio.c
    M audio/audio_int.h
    M audio/audio_template.h
    M audio/mixeng.c
    M audio/mixeng.h
    M audio/rate_template.h

  Log Message:
  -----------
  Merge tag 'audio-pull-request' of https://gitlab.com/marcandre.lureau/qemu 
into staging

Audio patches for QEMU 8.0

Cleanups and improvements from Volker Rümelin.

# -----BEGIN PGP SIGNATURE-----
#
# iQJQBAABCAA6FiEEh6m9kz+HxgbSdvYt2ujhCXWWnOUFAmQFjUccHG1hcmNhbmRy
# ZS5sdXJlYXVAcmVkaGF0LmNvbQAKCRDa6OEJdZac5ZLMD/sFWmVYccRqvOfOJvuC
# dJ7EtABmC6b4MxLkMyP5WLMoCezSha0vgcYwAL3oZX1dIBoGfaUXXdxIM8IK8rAv
# J2Fe2p9D+6tqzqc8jkbx0DmY040A3Gb18P60jL3NeQfmqCt7KmzuQoCMn6htPyyy
# NMgSRG3wy+esglmeU2majhxQZh2Vmwsi6i37A5Fg8b27oWLYHxeS6Lgp3PNAwJsA
# k/RKJeZDMjDh0f0wSHZN+8w0VVFQa3BjqoNV4UAgqSjsPaRlnQxppG2FEXNNrtLb
# bJ4rbXgSO68wrcweHgC2L7qWhLnYwdcdQFAPotmt2V1jtH4xx6f+ovwCdf0vZ5Fo
# YhHixpP41gFvF7sJWSZO0wUFKXTyLSdWIPaUKP9iMTZfXpBxo5H6rkPsZ6v5yyG2
# tLFlL0Rv/h3liEkngmRbw81gB9te92ZGXOjkB2Q69tGQl/tXRkhrn5VT2mufb7BV
# WUsdtSFl6P231lDuzQkFp85PkoRtr8eDPkkZW8/xgRx5h8j5I2bc6LRMd63w2tE6
# TGdUfiaqH396r1T87ynBdBWSc4H6YuImTouy27rAv/50x8w4cgk66wY+UGB7D8FX
# Eg4rU5Dzco2D+1RY50zSqZgPxIWjnC4xtYQXLaJURe0Way1HQqt/Pvp/aVFKUOef
# snYV1FLDvHg2Cf9LCGqvpW8b/w==
# =d4LY
# -----END PGP SIGNATURE-----
# gpg: Signature made Mon 06 Mar 2023 06:50:47 GMT
# gpg:                using RSA key 87A9BD933F87C606D276F62DDAE8E10975969CE5
# gpg:                issuer "marcandre.lureau@redhat.com"
# gpg: Good signature from "Marc-André Lureau <marcandre.lureau@redhat.com>" 
[full]
# gpg:                 aka "Marc-André Lureau <marcandre.lureau@gmail.com>" 
[full]
# Primary key fingerprint: 87A9 BD93 3F87 C606 D276  F62D DAE8 E109 7596 9CE5

* tag 'audio-pull-request' of https://gitlab.com/marcandre.lureau/qemu: (27 
commits)
  audio: remove sw->ratio
  audio/audio_template: substitute sw->hw with hw
  audio: handle leftover audio frame from upsampling
  audio: make recording packet length calculation exact
  audio: rename variables in audio_pcm_sw_read()
  audio: replace the resampling loop in audio_pcm_sw_read()
  audio: make playback packet length calculation exact
  audio: remove unused noop_conv() function
  audio: don't misuse audio_pcm_sw_write()
  audio: rename variables in audio_pcm_sw_write()
  audio: remove sw == NULL check
  audio: replace the resampling loop in audio_pcm_sw_write()
  audio: make the resampling code greedy
  audio: change type and name of the resample buffer
  audio: change type of mix_buf and conv_buf
  alsaaudio: reintroduce default recording settings
  alsaaudio: change default playback settings
  audio: remove audio_calloc() function
  audio/audio_template: use g_new0() to replace audio_calloc()
  audio/audio_template: use g_malloc0() to replace audio_calloc()
  ...

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>


Compare: https://github.com/qemu/qemu/compare/f003dd8d81f7...817fd33836e7



reply via email to

[Prev in Thread] Current Thread [Next in Thread]