From: Takashi Iwai <tiwai@suse.de>
To: Hannu Savolainen <hannu@opensound.com>
Cc: linux-sound@vger.kernel.org, LKML <linux-kernel@vger.kernel.org>
Subject: Re: [OT] ALSA userspace API complexity
Date: Sat, 07 Jan 2006 14:45:30 +0000 [thread overview]
Message-ID: <s5h7j9chzat.wl%tiwai@suse.de> (raw)
In-Reply-To: <Pine.LNX.4.61.0601060028310.27932@zeus.compusonic.fi>
At Fri, 6 Jan 2006 01:06:27 +0200 (EET),
Hannu Savolainen wrote:
>
> On Thu, 5 Jan 2006, Takashi Iwai wrote:
>
> > > If you have sound device without this soft mixing is moved to user space
> > > .. but applications do not need know about this even now because all
> > > neccessary details are handled on library level. Is it ?
> > > So question is: why the hell *ALL* mixing details are not moved to kernel
> > > space to SIMPLE and NOT GROWING abstraction ?
> >
> > Because many people believe that the softmix in the kernel space is
> > evil.
> This is the usual argument against kernel level mixing. Somebody has once
> said that all this is evil. However this is not necessarily correct.
>
> OSS has done kernel level mixing for years. The vmix driver has been used
> as the default audio device by hundreds of thousands of customers for
> years. We have not received any single bug report that is caused
> by the concept of kernel mixing.
>
> Kernel mixing is not rocket science. All you need to do is picking a
> sample from the output buffers of each of the applications, sum them
> together (with some volume scaling) and feed the result to the physical
> device. Ok, handling different sample formats/rates makes it much more
> difficult but that could be done in the library level.
Yes, but which library?
> > > Why Linux can't provide only OSS API abstraction for user space
> > > application ? And/or why ALSA developers want to replace this by
> > > mostly bloated and pourly documented ALSA user space API ?
> >
> > Because OSS API doesn't cover many things. For example,
> >
> > - PCM with non-interleaved formats
> There is no need to handle non-interleaved data in kernel level drivers
> because all the devices use interleaved formats.
Many RME boards support only non-intereleave data.
> Handling
> interleaving/de-interleaving in the application/driver code can be done in
> a simple for loop. So why to make the driver/API more complicated with
> this.
>
> > - PCM with 3-bytes-packed 24bit formats
> Applications have no reasons to use for this kind of stupid format so OSS
> translates it to the usual 32 bit format on fly. In fact OSS API does
> have support for this format.
Well, this is stupid but very popular nowadays, unforunately :)
> > These functions are popluar on many sound devices.
> >
> > In addition, imagine how you would implement the following:
> >
> > - Combination of multiple devices
> > - Split of channels to concurrent accesses
> Could you be more specific with the above isues?
I meant to split channels of a single device to different processes
(e.g. front/rear/clfe for each). (I know it's doable but the question
is how to implement it.)
> > - Handling of floating pointer samples
> This is not necessary in the kernel drivers because user land apps/libs do
> this themselves. However OSS API defines a floating point data type just
> in case some future device needs it.
>
> > - Post/pre-effects (like chorus/reverb)
> OSS already does this (part of the softoss/vmix driver).
>
> > Forcing OSS API means to force to process the all things above in
> > the kernel. I guess many people would disagree with it.
> Wrong. This is not an API issue at all. It's an implementation one.
Indeed. But you know that almost all "OSS" applications access
directly the device files. There is no room to put a library to solve
these things in user-space.
> An alternative for doing some operations in the kernel is looping the
> audio data through an user land daemon. The application itself is still
> using the usual OSS API without knowing anything about any daemons. We
> have tested this approach and it works. There just has not been any good
> reason to use this approach instead of using kernel space approach.
> Passing data through multiple applications makes the latency issues to
> accumulate. If you do the processing in the kernel you will hit by the
> task scheduling latencies at most once.
Yes, I thought of the similar thing... But, is it really a preferred
approach?
> The OSS approach is not to make everything in the kernel. Things that can
> be done easier in the applications (or in libraries) have been left
> out from the API.
Basically, it's not 100% fault of OSS, IMO. But, looking at the
reality, apps do access directly to the kernel. It's worse in the
case of binary-only apps like flash or skype. To support these
things, the only "realistic" (OSS-ish) solution so far is to implement
the conversion routines in the kernel level.
Takashi
next prev parent reply other threads:[~2006-01-07 14:45 UTC|newest]
Thread overview: 263+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-07-26 15:08 [2.6 patch] schedule obsolete OSS drivers for removal Adrian Bunk
2005-07-26 15:41 ` Jesper Juhl
2005-07-26 15:46 ` Adrian Bunk
2005-07-26 15:41 ` Thomas Sailer
2005-07-26 15:48 ` Jeff Garzik
2005-07-26 16:04 ` Adrian Bunk
2005-07-26 16:49 ` Lee Revell
2005-07-26 17:49 ` John W. Linville
2005-07-26 15:51 ` Lee Revell
2005-07-26 15:57 ` Jeff Garzik
2005-07-26 16:02 ` Lee Revell
2005-07-27 18:24 ` Adrian Bunk
2005-07-27 20:31 ` John W. Linville
2005-07-27 20:43 ` Jeff Garzik
2005-07-28 13:44 ` Alan Cox
2005-07-28 13:43 ` Jaroslav Kysela
2005-07-28 14:15 ` Adrian Bunk
2005-07-26 16:30 ` Adrian Bunk
2005-07-26 16:17 ` Andrew Haninger
2005-07-31 19:29 ` Adrian Bunk
2005-07-26 16:27 ` Zach Brown
2005-07-26 21:41 ` Krzysztof Halasa
2005-07-26 23:38 ` Zoran Dzelajlija
2005-07-27 23:28 ` Lee Revell
2005-07-27 23:58 ` Rogério Brito
2005-07-28 8:09 ` Takashi Iwai
2005-07-31 19:36 ` Adrian Bunk
2005-07-27 18:39 ` Kyle McMartin
2005-07-28 3:01 ` [parisc-linux] Re: [2.6 patch] schedule obsolete OSS drivers Randolph Chung
2005-07-28 14:14 ` [2.6 patch] schedule obsolete OSS drivers for removal Adrian Bunk
2005-07-28 15:04 ` Thorsten Knabe
2005-07-28 15:46 ` Adrian Bunk
2005-07-28 18:33 ` [Alsa-devel] Re: [2.6 patch] schedule obsolete OSS drivers for Lee Revell
2005-07-29 6:52 ` Jaroslav Kysela
2005-07-29 15:16 ` [Alsa-devel] Re: [2.6 patch] schedule obsolete OSS drivers for removal Adrian Bunk
2005-07-29 15:58 ` [Alsa-devel] Re: [2.6 patch] schedule obsolete OSS drivers for Thorsten Knabe
2005-07-31 19:39 ` [Alsa-devel] Re: [2.6 patch] schedule obsolete OSS drivers for removal Adrian Bunk
2005-08-01 14:26 ` Andrew Haninger
2005-08-02 0:13 ` [Alsa-devel] Re: [2.6 patch] schedule obsolete OSS drivers for Thorsten Knabe
2005-08-02 5:05 ` Lee Revell
2005-08-02 15:55 ` Thorsten Knabe
2005-07-29 15:32 ` [2.6 patch] schedule obsolete OSS drivers for removal (version 2) Adrian Bunk
2005-08-09 17:13 ` [2.6 patch] schedule obsolete OSS drivers for removal (version Lee Revell
2005-08-09 17:49 ` [2.6 patch] schedule obsolete OSS drivers for removal (version 2) Adrian Bunk
2005-08-09 17:54 ` [2.6 patch] schedule obsolete OSS drivers for removal (version Lee Revell
2005-08-12 19:58 ` Lee Revell
2005-08-14 11:00 ` [2.6 patch] schedule OSS USB drivers for removal Adrian Bunk
2005-07-31 13:38 ` [2.6 patch] schedule obsolete OSS " James Courtier-Dutton
2006-01-03 13:21 ` Andi Kleen
2006-01-03 13:47 ` Alistair John Strachan
2006-01-03 13:52 ` Andi Kleen
2006-01-03 13:58 ` David Lang
2006-01-03 14:33 ` Alistair John Strachan
2006-01-03 14:34 ` Alistair John Strachan
2006-01-03 14:01 ` Alistair John Strachan
2006-01-03 18:24 ` Lee Revell
[not found] ` <mailman.1136300646.6679.linux-kernel2news@redhat.com>
2006-01-04 11:13 ` Pete Zaitcev
2006-01-04 11:16 ` Jaroslav Kysela
2006-01-03 14:38 ` Jan Engelhardt
2006-01-03 14:41 ` Alistair John Strachan
2006-01-03 14:50 ` Jan Engelhardt
2006-01-03 15:22 ` Alistair John Strachan
2006-01-03 16:05 ` Tomasz Torcz
2006-01-03 16:29 ` Alistair John Strachan
2006-01-03 17:03 ` Olivier Galibert
2006-01-03 17:16 ` Alistair John Strachan
2006-01-03 19:24 ` Olivier Galibert
2006-01-03 19:37 ` Adrian Bunk
2006-01-03 21:40 ` Olivier Galibert
2006-01-03 23:10 ` Tomasz Kłoczko
2006-01-04 0:33 ` Thomas Sailer
2006-01-04 1:48 ` Olivier Galibert
2006-01-04 9:03 ` Jan Engelhardt
2006-01-04 9:37 ` [OT] ALSA userspace API complexity Alistair John Strachan
2006-01-06 2:19 ` Marcin Dalecki
2006-01-08 1:30 ` Hannu Savolainen
2006-01-08 9:24 ` [Alsa-devel] " Jaroslav Kysela
2006-01-08 22:47 ` Hannu Savolainen
2006-01-10 10:51 ` Jaroslav Kysela
2006-01-09 13:05 ` René Rebe
2006-01-09 15:10 ` Hannu Savolainen
2006-01-09 17:12 ` René Rebe
2006-01-09 21:58 ` David Lang
2006-01-09 23:20 ` John Rigg
2006-01-09 23:21 ` David Lang
2006-01-10 0:16 ` John Rigg
2006-01-10 0:29 ` David Lang
2006-01-10 0:44 ` Alan Cox
2006-01-10 1:56 ` Lee Revell
2006-01-10 1:27 ` John Rigg
2006-01-10 0:53 ` John Rigg
2006-01-10 0:48 ` Hannu Savolainen
2006-01-10 1:51 ` John Rigg
2006-01-10 2:17 ` Hannu Savolainen
2006-01-10 14:05 ` Hannu Savolainen
2006-01-10 14:17 ` Jaroslav Kysela
2006-01-10 14:39 ` Adam Tlałka
[not found] ` <mailman.1136368805.14661.linux-kernel2news@redhat.com>
2006-01-04 11:00 ` Pete Zaitcev
2006-01-04 11:35 ` Jaroslav Kysela
2006-01-04 11:47 ` Pete Zaitcev
2006-01-04 14:23 ` Alistair John Strachan
2006-01-05 11:41 ` Olivier Galibert
2006-01-05 12:01 ` Tomasz Kłoczko
2006-01-05 12:23 ` Jaroslav Kysela
2006-01-05 14:21 ` Olivier Galibert
2006-01-05 14:56 ` [parisc-linux] " Alan Cox
2006-01-05 21:14 ` Jan Engelhardt
2006-01-05 15:07 ` Tomasz Kłoczko
2006-01-05 16:14 ` Takashi Iwai
2006-01-05 17:19 ` Marcin Dalecki
2006-01-05 20:13 ` Tomasz Kłoczko
2006-01-07 14:32 ` Takashi Iwai
2006-01-08 2:03 ` Olivier Galibert
2006-01-08 2:26 ` Martin Drab
2006-01-08 13:21 ` Olivier Galibert
2006-01-08 13:32 ` Jaroslav Kysela
2006-01-08 23:18 ` Pavel Machek
2006-01-09 0:33 ` [Alsa-devel] " Hannu Savolainen
2006-01-09 12:24 ` Takashi Iwai
2006-01-09 17:49 ` Thierry Vignaud
2006-01-08 9:42 ` Jaroslav Kysela
2006-01-08 13:04 ` Olivier Galibert
2006-01-08 13:23 ` Jaroslav Kysela
2006-01-08 13:38 ` Marcin Dalecki
2006-01-09 0:30 ` [Alsa-devel] " Hannu Savolainen
2006-01-05 23:06 ` Hannu Savolainen
2006-01-05 23:39 ` Lee Revell
2006-01-05 23:56 ` Hannu Savolainen
2006-01-06 0:03 ` Lee Revell
2006-01-05 23:40 ` Lee Revell
2006-01-05 23:59 ` Hannu Savolainen
2006-01-06 15:03 ` Stefan Smietanowski
2006-01-06 15:48 ` Erik Mouw
2006-01-06 18:37 ` Lee Revell
2006-01-10 9:43 ` Jaroslav Kysela
2006-01-10 13:42 ` Hannu Savolainen
2006-01-10 14:08 ` Jaroslav Kysela
2006-01-10 14:17 ` Hannu Savolainen
2006-01-10 20:13 ` Marcin Dalecki
2006-01-06 0:14 ` Marcin Dalecki
2006-01-06 0:29 ` Martin Drab
2006-01-06 0:57 ` Marcin Dalecki
2006-01-06 1:49 ` Martin Drab
2006-01-06 1:21 ` Zan Lynx
2006-01-06 15:17 ` Stefan Smietanowski
2006-01-06 3:14 ` Edgar Toernig
2006-01-06 3:33 ` Hannu Savolainen
2006-01-06 11:34 ` Florian Schmidt
2006-01-06 7:47 ` Jan Engelhardt
2006-01-07 14:45 ` Takashi Iwai [this message]
2006-01-05 18:56 ` Lee Revell
2006-01-05 22:39 ` Joern Nettingsmeier
2006-01-05 23:44 ` Tomasz Kłoczko
2006-01-05 23:49 ` Olivier Galibert
2006-01-06 0:22 ` Joern Nettingsmeier
2006-01-06 1:30 ` Olivier Galibert
2006-01-06 2:20 ` Hannu Savolainen
2006-01-10 9:54 ` Jaroslav Kysela
2006-01-10 13:50 ` Hannu Savolainen
2006-01-06 0:00 ` Marcin Dalecki
2006-01-05 12:47 ` Leonard Milcin Jr.
2006-01-04 12:13 ` [2.6 patch] schedule obsolete OSS drivers for removal Joern Nettingsmeier
2006-01-04 12:35 ` Andi Kleen
2006-01-04 12:41 ` Jaroslav Kysela
2006-01-04 17:31 ` Alistair John Strachan
2006-01-04 17:48 ` Takashi Iwai
2006-01-05 6:42 ` Lee Revell
2006-01-03 18:28 ` Lee Revell
2006-01-03 20:22 ` Takashi Iwai
2006-01-03 20:37 ` Tomasz Torcz
2006-01-03 20:44 ` Takashi Iwai
2006-01-03 20:56 ` Jesper Juhl
2006-01-03 21:56 ` Adrian Bunk
2006-01-03 22:11 ` Jesper Juhl
2006-01-04 11:46 ` Takashi Iwai
2006-01-04 14:46 ` Jan Engelhardt
2006-01-04 16:43 ` Marcin Dalecki
2006-01-05 10:57 ` Jan Engelhardt
2006-01-05 12:44 ` Marcin Dalecki
2006-01-05 18:33 ` Lee Revell
2006-01-05 20:03 ` Marcin Dalecki
2006-01-05 20:05 ` Lee Revell
2006-01-05 20:18 ` Marcin Dalecki
2006-01-05 20:28 ` Lee Revell
2006-01-05 20:32 ` Marcin Dalecki
2006-01-05 20:39 ` Lee Revell
2006-01-05 20:32 ` Lee Revell
2006-01-05 20:54 ` Marcin Dalecki
2006-01-05 21:01 ` Lee Revell
2006-01-05 21:43 ` Marcin Dalecki
2006-01-05 21:47 ` Lee Revell
2006-01-05 23:35 ` Jesper Juhl
2006-01-06 0:04 ` Marcin Dalecki
2006-01-06 0:08 ` Jesper Juhl
2006-01-06 1:36 ` Hannu Savolainen
2006-01-06 9:54 ` James Courtier-Dutton
2006-01-06 13:37 ` Hannu Savolainen
2006-01-06 10:34 ` Gabor Gombas
2006-01-06 12:48 ` Hannu Savolainen
2006-01-07 14:09 ` Takashi Iwai
2006-01-07 14:57 ` Marcin Dalecki
2006-01-08 0:21 ` Hannu Savolainen
2006-01-06 2:40 ` Diego Calleja
2006-01-06 14:57 ` Olivier Galibert
2006-01-06 20:26 ` Jaroslav Kysela
2006-01-07 0:40 ` Marcin Dalecki
2006-01-07 0:56 ` Olivier Galibert
2006-01-04 20:12 ` Kyle Moffett
2006-01-04 22:25 ` Olivier Galibert
2006-01-03 22:13 ` Tomasz Torcz
2006-01-03 23:10 ` Adrian Bunk
2006-01-03 23:51 ` Tomasz Kłoczko
2006-01-04 0:03 ` Adrian Bunk
2006-01-04 0:46 ` Tomasz Kłoczko
2006-01-04 1:01 ` Adrian Bunk
2006-01-04 2:51 ` Tomasz Kłoczko
2006-01-04 8:50 ` Alan Cox
2006-01-04 13:21 ` Greg Louis
2006-01-04 14:41 ` Adrian Bunk
2006-01-04 10:37 ` tapas
2006-01-04 17:28 ` Alistair John Strachan
2006-01-05 7:14 ` Jan Engelhardt
2006-01-04 17:54 ` Takashi Iwai
2006-01-04 18:17 ` Florian Schmidt
2006-01-04 19:28 ` Marcin Dalecki
2006-01-04 19:52 ` Florian Schmidt
2006-01-05 7:11 ` Jan Engelhardt
2006-01-05 11:15 ` Takashi Iwai
2006-01-05 21:20 ` Jim Crilly
2006-01-05 7:11 ` Lee Revell
2006-01-05 19:09 ` Edgar Toernig
2006-01-05 19:29 ` Lee Revell
2006-01-05 20:19 ` Lee Revell
2006-01-05 21:05 ` Edgar Toernig
2006-01-05 21:10 ` Lee Revell
2006-01-05 20:24 ` Edgar Toernig
2006-01-05 20:29 ` Lee Revell
2006-01-05 7:16 ` Lee Revell
2006-01-05 11:43 ` Florian Schmidt
2006-01-05 17:48 ` Lee Revell
2006-01-08 21:07 ` Ville Herva
2006-01-08 21:44 ` Lee Revell
2006-01-09 8:16 ` Ville Herva
2006-01-09 13:52 ` Lee Revell
2006-01-09 14:22 ` Ville Herva
2006-01-09 15:18 ` Lee Revell
2006-01-09 16:21 ` Ville Herva
2006-01-09 16:22 ` Lee Revell
2006-01-05 18:36 ` Lee Revell
2006-01-05 18:47 ` Tomasz Torcz
2006-01-05 19:10 ` Lee Revell
2006-01-05 19:15 ` Florian Schmidt
2006-01-04 0:28 ` Stefan Smietanowski
2006-01-04 1:38 ` Tomasz Kłoczko
2006-01-04 9:48 ` Stefan Smietanowski
2006-01-05 3:03 ` Peter Bortas
2006-01-05 7:13 ` Jan Engelhardt
2006-01-05 7:19 ` Lee Revell
2006-01-05 8:41 ` Stefan Smietanowski
2006-01-05 9:57 ` Peter Bortas
2006-01-03 17:09 ` Jan Engelhardt
2007-01-04 18:53 ` [2.6 patch] schedule obsolete OSS drivers for removal, 3rd round Adrian Bunk
2007-01-04 21:31 ` [2.6 patch] schedule obsolete OSS drivers for removal, 3rd Benjamin Herrenschmidt
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=s5h7j9chzat.wl%tiwai@suse.de \
--to=tiwai@suse.de \
--cc=hannu@opensound.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-sound@vger.kernel.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