|
|
发表于 2009-9-21 11:54:32
|
显示全部楼层
Post by mathfeel;2028701
开发理念不同?
呵呵,你也看到這個文章了。不過看lwn上的討論以及slashdot上的討論,包括我在內的很多人認為更多的還是一種政治因素。一方面oss閉過源,另外一個方面alsa的勢力有些根深蒂固……
後面也有對這個的回覆:
This is probably as good a place as any to highlight one of Lennart's responses in the story comments:
"OSS4 does a lot of signal processing (resampling, mixing) in the kernel. That is a big no-no, it's verboten in the Linux world. The kernel is supposed to include drivers, not processing algorithms.
"
Sure, that's why all of V4L2 lives inside the kernel ? =)
Then, the driver support in ALSA these days is actually much better than OSS4 since a lot of hw manufacturers nowadays work with the Linux community to improve the in-kernel drivers. OSS4 doesn't have that advantage.
Yeah except this work only benefits linux, not all FOSS OSes. But of course there is nothing but Linux. (我個人高度認為OSS4的驅動比ALSA強太多了,特別是筆記本常用的hda-intel。)
The ALSA people work well together with the rest of the kernel people, the OSS people absolutely don't.
You're inverting stuff here, it's the kernel ppl who don't even consider OSS.
Then, the fact that the OSS API is a kernel API is one of the biggest issues, due to its ioctl-caused awkwardness and the impracticability to virtualize.
QEMU virtualizes linux syscalls pretty well
Seriously, I'm sure there are LD_PRELOAD things around that do it (not like it's very clean though).
Besides, There actually is a library I think but it only touches MIDI stuff:
http://mercurial.opensound.com/? ... 9/lib/libOSSlib/Rea...
It's also not extensible. Let's say I wanted to add DRC to the mixing code: I'd have to code that in kernel space -- and floating point calculations aren't even allowed in kernel space! It's just the wrong place to do these processing tasks in the kernel.
BeOS has no problem doing floats in the kernel (though it has a clean native API at userland level, and a media_server that does the mixing, so I don't even need vmix in OSS in BeOS.
Also on Linux interfacing with FireWire or Bluetooth audio happens in userspace and can thus never be covered by OSS4.
Well that's a design flaw in Linux.
Even BeOS and Haiku allow this.
OSS4 is not just the worse system, it's a fundamentally wrong system. (At least on Linux. On niche Unixes different requirements apply)
ALSA is also fundamentally wrong w/r portability... |
|