On Thursday 25 September 2008 01:02:31 SeaJey wrote:
> Source: http://0pointer.de/blog/projects/guide-to-sound-apis
> Quote:
> <skip>
> OSS
>     The Open Sound System is a low-level PCM API supported by a variety of 
> Unixes including Linux. It started out as the standard Linux audio system and 
> is supported on current Linux kernels in the API version 3 as OSS3. OSS3 is 
> considered obsolete and has been fully replaced by ALSA. A successor to OSS3 
> called OSS4 is available but plays virtually no role on Linux and is not 
> supported in standard kernels or by any of the relevant distributions. The 
> OSS 
> API is very low-level, based around direct kernel interfacing using ioctl()s. 
> It it is hence awkward to use and can practically not be virtualized for 
> usage 
> on non-kernel audio systems like sound servers (such as PulseAudio) or 
> userspace sound drivers (such as Bluetooth or FireWire audio). OSS3's timing 
> model cannot properly be mapped to software sound servers at all, and is also 
> problematic on non-PCI hardware such as USB audio. Also, OSS does not do 
> sample type conversion, remapping of resampling if necessary. This means that 
> clients that properly want to support OSS need to include a complete set of 
> converters/remappers/resamplers for the case when the hardware does not 
> natively support the requested sampling parameters. With modern sound cards 
> it 
> is very common to support only S32LE samples at 48Khz and nothing else. If an 
> OSS-client assumes it can always play back S16LE samples at 44.1Khz it will 
> thus fail. OSS3 is portable to other Unix-like systems, various differences 
> however apply. OSS also doesn't support surround sound and other 
> functionality 
> of modern sounds systems properly. OSS should be considered obsolete and not 
> be used in new applications. ALSA and PulseAudio have limited 
> LD_PRELOAD-based 
> compatibility with OSS.
> 
> Are the things so bad or this is kind of rant?

It's pretty inaccurate FUD (From the URL address - it's Pulseaudio's author, 
right? I'd have expected him to know better). He's basically judging OSS per 
the old OSS/Free drivers, which is like 5 years ago, and even that he does 
wrong.
First, *all* current implementations/emulations of OSSv3 do sample conversion. 
It's not even a property defined by the API but by the underlying drivers.
Second, even OSSv3 supported surround, USB cards, etc.
Third, arguing that "it cannot be virtualized" is disproven by the amount of 
emulations and alternative implementations existing out there and working in 
practice. (The main difficulty is mmap() API, which is very rarely used anyway, 
and even that can be done with, say, oss2pulse).
Fourth, complaining about OSS API being awkward, is... well, awkward when you 
compare it to ALSA API, if you could compare it, since most ALSA API isn't 
documented.
It's kinda funny he advocates using ALSA API (not in the quoted part above, but 
last time I read his blog he suggested it). Actual ALSA devs advocate against 
it, but using a sound library with multiple backends[1].

[1] e.g. http://www.archivum.info/linux.kernel/2006-01/msg02687.html

P.S. Most modern soundcards I've seen do "S16LE" and nothing else, 
unfortunately.
_______________________________________________
oss-devel mailing list
oss-devel@mailman.opensound.com
http://mailman.opensound.com/mailman/listinfo/oss-devel

Reply via email to