Date: Sat, 16 Dec 2017 09:46:58 +0800 From: blubee blubeeme <gurenchan@gmail.com> To: Alexander Leidinger <Alexander@leidinger.net> Cc: Hans Petter Selasky <hps@selasky.org>, freebsd-multimedia@freebsd.org Subject: Re: FreeBSD amd64 GENERIC kernel Message-ID: <CALM2mEkkRKm7V715QZpji9oDYGJOcFXbgrBq4woT-O%2BsGnD7Fg@mail.gmail.com> In-Reply-To: <CALM2mEm0WWqHx=67tPf9_ah1PAfUEirREpTiRmvEKxZ_YR7u-g@mail.gmail.com> References: <CALM2mEnnXKAyF_ti_zKYt=1m-ZTfjH5di1cayYjGM4hi9dOxRQ@mail.gmail.com> <aa346744-94c9-98a4-4de6-c5e956bf096c@ShaneWare.Biz> <CALM2mE=88_a-9FF3-e49TMPm1pGzwQn1h_wx2gofHK-NRKOpZA@mail.gmail.com> <cf0b39a9-8059-06c2-a033-109c626de225@selasky.org> <CALM2mEnfdv6R4YuSMSnR-SEtR1ief5uSg4qYWFb49dVQsRMw6A@mail.gmail.com> <ad2778be-a601-b825-1195-134dd02b04d9@selasky.org> <CALM2mEkKUr%2BrbMtS_ObXq0SYvZgFUKN9VXwqV-bxFrWVfizx1Q@mail.gmail.com> <4c3ae20e-b6dd-d5db-0b93-2e1225daa658@selasky.org> <CALM2mEkedLN%2Br2fk4YX3_Y01ENgvqo4s9yoyfBKTkBJkH56dcQ@mail.gmail.com> <4eb0c57e-96fa-b75a-17f8-750154aa247a@selasky.org> <CALM2mEn=9eNHzezpkKSBydKzedqagLwtfMopuDQb9Xem7=OGUA@mail.gmail.com> <d92eae76-831b-3a6f-a7a6-4f4d7e66df99@selasky.org> <CALM2mEmnxsdwy5rr9ApC3q7kZ2-EK2YYBqMAibd9nA3XRfhKhQ@mail.gmail.com> <20171216011614.Horde.Uitm74qhBEwh_NRo9RgDgu3@webmail.leidinger.net> <CALM2mEm0WWqHx=67tPf9_ah1PAfUEirREpTiRmvEKxZ_YR7u-g@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, Dec 16, 2017 at 9:39 AM, blubee blubeeme <gurenchan@gmail.com> wrote: > > > On Sat, Dec 16, 2017 at 8:16 AM, Alexander Leidinger < > Alexander@leidinger.net> wrote: > >> Quoting blubee blubeeme <gurenchan@gmail.com> (from Fri, 15 Dec 2017 >> 22:39:25 +0800): >> >> What's with the stuck up attitude? Stay focused on the issue at hand which >>> is FreeBSD's fork of OSS makes it a challenge to implement software that >>> sticks to the OSS standard. >>> >>> There's nobody actively working on improving the audio situation on >>> FreeBSD. You have a user/developer who wants to do the work and you react >>> >> >> Can you please describe in features / bullet-points what is missing >> instead of saying "X is better than Y"? >> >> like it's some personal attack on your person to update the underlying >>> code. >>> >>> Guess what, most of the clever features you talk about are in OSS4 and if >>> they are not, they can still be added. >>> >> >> What I understand what you say is: >> - I want to replace X by Y, because Y is better. >> - Anything what is better in X can be added to Y. >> >> So basically I understand that you want to replace incomplete feature-set >> in X by an incomplete feature-set from Y (without knowing what the >> incompleteness in either X or Y is). > > There's no incomplete "feature" what I am saying is the changes made for > compatibility brought forward legacy application bugs. > When you update to clang 4 and a lot of your code breaks because they use > depreciated coding standards, do you patch clang or > do you fix your software? > > Why is this so hard for you guys to understand? > >> >> >> I'd really appreciate it if you refrained from your continued attempts at >>> ad hominem against me and stick to code and a discussion around ideas and >>> implementations. >>> >> >> I understand HPS as asking you to explain in different words what you >> want to tell, as he is not understanding what you want to tell. To my >> knowledge HPS is not a native english speaker (neither am I). I don't know >> if you are a native english speaker or not. >> As a person working in a multi-language (at least 10, with english being >> the common one) environment I suggest not getting upset about phrases like >> "I don't understand your english", it doesn't necessarily mean a deficit on >> the receiver side of this phrase, but most often just means both ends don't >> share the same language background. Often it helps in such situations to >> switch from implicit ("it") references to explicitly mention an >> item/feature/object/... and to use short phrases. > > >> >> And to bring in some technical info (parts of "AFAIR", I may >> misremember...): >> - The OSS code in FreeBSD was at some point in time the 4Front OSS code. >> - At some point 4Front closed-source their implementation and FreeBSD >> deviated. >> - At some point Ariff put in an effort to advance the OSS code in >> FreeBSD which made it the best in various aspects (one of them latency) >> when compared to 4Front code, Windows, MacOS and Linux ALSA. >> - Then in 2006 Ryan was adding OSSv4-API compatibility to the FreeBSD >> sound code as part of the Google Summer of Code, mentored by Ariff and me. >> - Since then I don't remember big API changes/improvements... HPS worked >> a lot on USB audio support, userland drivers and AFAIK some MIDI stuff as >> part of the userland drivers, but all that is more or less drivers, not >> API... please correct me if I got this wrong; and mav(?) worked on HDA >> support (also driver, not API). >> > I posted a link below as a reference and some reasons why those changes > were not a good idea. > The whole point of ossv4 was to implement simpler API and depreciate > legacy audio application coding styles. > >> >> Note, various aspects of the FreeBSD sound code can be tweaked by >> sysctls, e.g. latency, virtual channels, direct physical access >> ("bitperfect"), automatic resampling, equilizer, ... (see "sysctl hw.snd >> dev.pcm dev.hdaa dev.hdac" and "man sound snd_hda snd_uaudio" and the >> SOUND_4.TXT of Ariff you mentioned). >> >> And regarding your comment about SOUND4.TXT: if you read this document >> carefully, you will notice that the part you quoted as being bad can be >> disabled. >> > It's not about being bad and can be disabled, if the API is still there > then people will copy old coding practices guaranteeing that newer audio > applications > are still plagued by the crud from legacy audio API. > > So you leave that stuff there, with FreeBSD providing NO documentation/ > tutorials/ example programs of how to write decent sound applications. > A dev comes along and copies some code from an older application and > brings forward all the legacy coding practices, but sure they use JACK > audio, > it seems to run okay, now you try to port the application to FreeBSD, the > sound quality is bad or it's janky oh, FreeBSD sucks at audio. > >> >> Bye, >> Alexander. >> >> -- >> http://www.Leidinger.net Alexander@Leidinger.net: PGP 0x8F31830F9F2772BF >> http://www.FreeBSD.org netchild@FreeBSD.org : PGP 0x8F31830F9F2772BF >> > > Hi, > > On 12/15/17 15:39, blubee blubeeme wrote: > >> I'd appreciate it if you kept the discussion on sound and improve your >> English comprehension. >> > > See below. > > I gave one example of a Chromium bug where they said they'd accept an OSS >> patch. I did not say janky audio in Chromium have anything to do with why >> I >> think OSS is a better choice for the default audio system. >> > > Can you explain again using technical terms: > > 1) Why is 4Front's OSSv4 better than the in-base FreeBSD OSSv4? > > 2) Why do we need native OSSv4 support in Chromium? > > 3) Why can't we use the library provided by the port at > /usr/ports/audio/alsa-lib to implement audio support in Chromium? > > You've made that assumption in this thread numerous times and I've ignored >> it because I wouldn't expect someone to be that dense. >> > > Can you expand the word "that" in the sentence above? What are you > referring to? I see no connection :-( > > It doesn't make sense because you fail to understand English, that's not my >> fault. >> > > If you want to get a message through on this list keep it simple and > stupid, KISS, for a start. I'm sorry my comment about your English was seen > as a personal attack, "ad hominem". That was not my intention. > > >> I have been porting synth tools to FreeBSD and I'd like to continue to >> port >> the software, implementing OSS backends for them based on the current >> upstream I am running into errors because of these so called "excellent" >> features which causes a lot of headache. >> > > Exactly what are the "errors" you refer to in the paragraph above? Can you > list them up one by one, including a brief explanation about the problem > and the solution the way you see it? > > What's with the stuck up attitude? Stay focused on the issue at hand which >> is FreeBSD's fork of OSS makes it a challenge to implement software that >> sticks to the OSS standard. >> > > Can you give a reference to the claim FreeBSD's OSSv4 is a fork of > 4Front's OSS? > > >> There's nobody actively working on improving the audio situation on >> FreeBSD. >> > > Words like "nobody", "noone", "everyone", "everybody" and so on are > frequently used to create a conflict. Is that what you are trying to do? > > > You have a user/developer who wants to do the work and you react > > like it's some personal attack on your person to update the underlying > code. > > I'm sorry and I don't understand what you are trying to express in the > paragraph above. Who are you addressing in the paragraph above? Is it me, > HPS, or is it the "FreeBSD developers" in general? > > What do you mean by "underlying code"? The underlying code of what? This > is a half of a sentence in my opinion! > > these "clever" developers >> > > Who are the "clever" developers you refer to? Can you list their names? > > Guess what, most of the clever features you talk about are in OSS4 and if >> they are not, they can still be added. >> > > OSS4 what? Again, please expand the sentences so that I and others reading > this list understand better what you actually mean. When I'm reading: "most > of the clever features in OSS4" , it can mean multiple things. Either you > refer to OSS4 as 4Front's opensound code, or OSS4 means the OSS4 IOCTL API > for interfacing with audio character devices. What do you mean? Do you mean > the smart features are in 4Front's opensound code or do you mean all the > smart features are in the OSS4 IOCTL API? > > I'd really appreciate it if you refrained from your continued attempts at >> ad hominem against me and stick to code and a discussion around ideas and >> implementations. >> > > Try to put in a few more words when explaining technical things in this > thread. Try to limit the scope of what you are trying to say. I've tried as > best as I can to point out where our communication stalls. This is not > meant as a personal attack. Again, I'm having a hard time trying to fully > understand what you mean or maybe someone else on this list will understand > you better. > > @Hans > Forget that I said anything about Chromium, this is a lot lower level than > any specific application. > > The whole point of implementing 4Front oss and not a FreeBSD for is to > K.I.S.S. > Here's why > 1)OSS v4 soundcard.h and code already hdandles ALL legacy applications w/o > needing to implement special kernel kludges > 2)OSS v4 API docs explain how NOT to keep programming in the legacy style > that causes jank audio > The main way this was accomplished was by removing the exclusive access > to the sound hardware, > this > > link: https://people.freebsd.org/~ariff/SOUND_4.TXT > > hw.snd.vpc_mixer_bypass (default=1, enabled) > > OSSv4 Compatibility: > Mostly, but we did it a 'better' way, like providing a special > bypass mode for legacy applications. > > This linuxism literally carried forward all the bugs from the past, 4Front > oss handles this transparently, no need for these types of switches since > they'll allow devs to carry forward their bad programming habits. > > If you update to the latest version of 4Front oss, this is handled, no > need to main the code behind this stuff. > ----- > > ----- > > dev.pcm.X.[play|rec].vchanmode (default=depends...) > 'fixed' or '0': > The good old mode. Channel mixing is done using fixed > format/rate. Digital passthrough or other advanced operations > will not work in this mode (consider it as a 'legacy' mode). > For hardware channels that doesn't support digital formats, this > is the default mode. > > 'passthrough' or '1': > Channel mixing is done using fixed format/rate, but advanced > operations such as digital passthrough or 'Exclusive Access' > (#6 down below) will start working. All channels should > produce sound as usual until there is a request for a digital > format playback, which in this case will 'mute' other channels > and let the latest incoming digital format pass through > undisturbed. Multiple / concurrent digital streams are > supported, but the LATEST stream will take precedence and > mute all other streams. > > 'adaptive' or '2': > Advanced mode. Works like much like'passthrough' mode, but is > a bit smarter, especially for multiple pcm channels with > different format/rate. Whenever a new channel is about to start, > it will scan the entire list of virtual channels and decide which > format/rate is the best (mostly, the higher/bigger). This will > ensure that the quality of mixing depends on the best of all > channels. The (bad) side effect of this mode is that the > hardware DMA needs to be restarted and might cause annoying > pops/clicks, but for a long running playback, this issue > might be acceptable. Any changes for current format/rate can > be seen through the output of sysctl > dev.pcm.[play|rev].vchan[format|rate]. > > OSSv4 Compatibility: > 4front OSS incapable of doing this magic. > > There's nothing K.I.S.S. about this and again, all this "magic" is what's > making audio programming a mess. > ----- > > ----- > > 5) Bitperfect > > OSSv4 Compatibility: > SNDCTL_DSP_COOKEDMODE is mostly compatible, except that it will handle > complex situation with vchans enabled 'better' compared to 4front OSS. > > Again "better" compared to 4front oss, how so? > ----- > > ----- > > 6) Exclusive Access > > OSSv4 Compatibility: > This feature is mostly compatible with OSSv4, except that 4front OSS > prevents all other applications from running (stalled/halted, other > unknown grave effects) if any sound device being accessed in a such > way. FreeBSD does this smartly on top of the Transparent / Adaptive > Virtual Channel. > > This is the main issue and a cause for so many sound systems. If this > isn't removed and have those applications use legacy mode of the default > 4Front soundcard.h and follow better codinig practices into the future, no > amount of sound architecture rewrite will help. > > This bypass is what lead to ALSA, JACK v1-v2, and Pulse, which still don't > solve the problem of janky audio. This isn't a feature it's a bug. > audio/virtual_oss doesn't make up for that. > ----- > > You guys say I am claiming that X is better than Y, maybe you should read > the reference link that I shared above. > > 4Front oss already has a soundcard.h file that implements and support all > the legacy applications, they could've ripped that code out but left it > there for compatibility. > > Read the warnings about legacy audio applications and why ossv4 was > implemented the way it was: http://manuals.opensound.com/ > developer/ossapi.html > > What part of this setup looks simple: http://i39.tinypic. > com/adfdwz.png?w=240 > > And I would really like to ask, all the people replying in this thread how > many actually make music? > > The biggest reason to implement the official 4front oss is like hans said > above > Keep It Simple Stupid. > What would be easier, trying to update FreeBSD sound and patching around 4Front oss or maintaining these eight files? Source Explanation FreeBSD/os_freebsd.h <http://manuals.opensound.com/sources/os_freebsd.h.html> OS specific definitions for FreeBSD FreeBSD/bsddefs.h <http://manuals.opensound.com/sources/bsddefs.h.html> Definitions for routines and variables exported by osscore.c FreeBSD/os_freebsd.c <http://manuals.opensound.com/sources/os_freebsd.c.html> Operating system abstraction functions for FreeBSDFiles used to build OSS and the drivers during install Source Explanation FreeBSD/bsdvirtual.inc <http://manuals.opensound.com/sources/bsdvirtual.inc.html> Wrapper functions for virtual drivers under FreeBSD FreeBSD/osscore.c <http://manuals.opensound.com/sources/osscore.c.3.html> OSS core functions that need to be compiled in the target system FreeBSD/module.inc <http://manuals.opensound.com/sources/module.inc.6.html> Generic OSS driver module interface for FreeBSD FreeBSD/devid.h <http://manuals.opensound.com/sources/devid.h.html> Source file os_build/FreeBSD/devid.h FreeBSD/bsdpci.inc <http://manuals.opensound.com/sources/bsdpci.inc.html> Wrapper functions for PCI drivers under FreeBSD
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CALM2mEkkRKm7V715QZpji9oDYGJOcFXbgrBq4woT-O%2BsGnD7Fg>