public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Michael Brown" <mcb30@ipxe.org>
To: devel@edk2.groups.io, harlydavidsen@gmail.com,
	Andrew Fish <afish@apple.com>
Cc: Mike Kinney <michael.d.kinney@intel.com>,
	Leif Lindholm <leif@nuviainc.com>,
	Laszlo Ersek <lersek@redhat.com>,
	"Desimone, Nathaniel L" <nathaniel.l.desimone@intel.com>,
	Rafael Rodrigues Machado <rafaelrodrigues.machado@gmail.com>,
	Gerd Hoffmann <kraxel@redhat.com>
Subject: Re: [edk2-devel] VirtIO Sound Driver (GSoC 2021)
Date: Thu, 15 Apr 2021 13:07:06 +0100	[thread overview]
Message-ID: <309cc5ca-2ecd-79dd-b183-eec0572ea982@ipxe.org> (raw)
In-Reply-To: <CAJQtwF2e4dACRVyibbLOmOEmy34xMdGb1s0YdPFcHmZ2NMoBDA@mail.gmail.com>

On 15/04/2021 06:28, Ethin Probst wrote:
> - I hoped to add recording in case we in future want to add
> accessibility aids like speech recognition (that was one of the todo
> tasks on the EDK2 tasks list)

Is there any necessity for audio input and output to be implemented 
within the same protocol?  Unlike a network device (which is 
intrinsically bidirectional), it seems natural to conceptually separate 
audio input from audio output.

> - Muting and volume control could easily be added by just replacing
> the sample buffer with silence and by multiplying all the samples by a
> percentage.

The code controlling volume/mute may not have any access to the sample 
buffer.  The most natural implementation would seem to allow for a 
platform to notice volume up/down keypresses and use those to control 
the overall system volume, without any knowledge of which samples (if 
any) are currently being played by other code in the system.

> - Finally, the reason I used enumerations for specifying parameters
> like sample rate and stuff was that I was looking at this protocol
> from a general UEFI applications point of view. VirtIO supports all of
> the sample configurations listed in my gist, and it seems reasonable
> to allow the application to control those parameters instead of
> forcing a particular parameter configuration onto the developer.

Consider also the point of view of the developer implementing a driver 
for some other piece of audio hardware that happens not to support 
precisely the same sample rates etc as VirtIO.  It would be extremely 
ugly to force all future hardware to pretend to have the same 
capabilities as VirtIO just because the API was initially designed with 
VirtIO in mind.

As a developer on the other side of the API, writing code to play sound 
files on an arbitrary unknown platform, I would prefer to simply consume 
as simple as possible an abstraction of an audio output protocol and not 
have to care about what hardware is actually implementing it.

Both of these argue in favour of defining a very simple API that 
expresses only a common baseline capability that is plausibly 
implementable for every piece of audio hardware ever made.

Coupled with the relatively minimalistic requirements for boot-time 
audio, I'd probably suggest supporting only a single format for audio 
data, with a fixed sample rate (and possibly only mono output).

As always: perfection is achieved, not when there is nothing more to 
add, but when there is nothing left to take away.  :)

Thanks,

Michael

  reply	other threads:[~2021-04-15 12:07 UTC|newest]

Thread overview: 62+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-29 20:28 VirtIO Sound Driver (GSoC 2021) Ethin Probst
2021-03-30  3:17 ` [edk2-devel] " Nate DeSimone
2021-03-30 14:41   ` Ethin Probst
2021-03-31  6:34     ` Nate DeSimone
2021-03-30 21:50 ` Rafael Machado
2021-03-30 22:12   ` Ethin Probst
     [not found]   ` <16713E6D64EE917D.25648@groups.io>
2021-03-31  0:01     ` Ethin Probst
2021-03-31  5:02       ` Andrew Fish
2021-03-31  6:41         ` Nate DeSimone
2021-04-01  5:05           ` Ethin Probst
2021-04-05  4:42             ` Andrew Fish
2021-04-05  4:43               ` Ethin Probst
2021-04-05  5:10                 ` Andrew Fish
2021-04-06 14:16           ` Laszlo Ersek
2021-04-06 15:17             ` Ethin Probst
2021-04-13 12:28               ` Leif Lindholm
2021-04-13 14:16                 ` Andrew Fish
2021-04-13 16:53                   ` Ethin Probst
2021-04-13 21:38                     ` Andrew Fish
2021-04-13 23:47                       ` Ethin Probst
     [not found]                       ` <16758FB6436B1195.32393@groups.io>
2021-04-14  1:20                         ` Ethin Probst
2021-04-14  3:52                           ` Andrew Fish
2021-04-14 20:47                             ` Ethin Probst
2021-04-14 22:30                               ` Michael D Kinney
2021-04-14 23:54                                 ` Andrew Fish
2021-04-15  4:01                                   ` Ethin Probst
2021-04-15  4:58                                     ` Andrew Fish
2021-04-15  5:28                                       ` Ethin Probst
2021-04-15 12:07                                         ` Michael Brown [this message]
2021-04-15 16:42                                           ` Andrew Fish
2021-04-15 20:11                                             ` Ethin Probst
2021-04-15 22:35                                               ` Andrew Fish
2021-04-15 23:42                                                 ` Ethin Probst
2021-04-16  0:59                                                   ` Michael Brown
2021-04-16  5:13                                                     ` Andrew Fish
2021-04-16  5:33                                                       ` Ethin Probst
2021-04-16 11:34                                                         ` Leif Lindholm
2021-04-16 17:03                                                           ` Andrew Fish
2021-04-16 17:45                                                             ` Ethin Probst
2021-04-16 17:55                                                               ` Ethin Probst
2021-04-16 18:09                                                                 ` Andrew Fish
2021-04-16 23:50                                                                   ` Ethin Probst
2021-04-16 18:02                                                               ` Andrew Fish
2021-04-17 16:51                                                               ` Marvin Häuser
2021-04-17 17:31                                                                 ` Andrew Fish
2021-04-17 18:04                                                                   ` Marvin Häuser
2021-04-18  8:55                                                                     ` Ethin Probst
2021-04-18 15:22                                                                       ` Andrew Fish
2021-04-18 19:11                                                                         ` Marvin Häuser
2021-04-18 19:22                                                                           ` Marvin Häuser
2021-04-18 21:00                                                                             ` Andrew Fish
2021-04-16 13:22                                                   ` Marvin Häuser
2021-04-16 14:34                                                     ` Andrew Fish
2021-04-16 15:03                                                       ` Marvin Häuser
     [not found]                                                 ` <16762C957671127A.12361@groups.io>
2021-04-16  0:59                                                   ` Ethin Probst
2021-04-16  1:03                                                     ` Michael Brown
2021-04-16  2:06                                                       ` Ethin Probst
2021-04-16  3:48                                                       ` Andrew Fish
2021-04-16  4:29                                                         ` Ethin Probst
2021-04-15  9:51                                     ` Laszlo Ersek
2021-04-15 16:01                                       ` Andrew Fish
2021-04-04 22:05 ` Marvin Häuser

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-list 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=309cc5ca-2ecd-79dd-b183-eec0572ea982@ipxe.org \
    --to=devel@edk2.groups.io \
    /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