Let's add the LKML to this. -- Markus Rechberger -
Not possible? We're doing it all the time... However, your ideas were rejected in this discussion, IMHO there is a lack of openness caused by people being burned in past flamewars. This makes it a bit difficult to see through what happens and why, and to participate. However, I think it Oh dear, there we go again... more flame bait... I reality, 95% of your driver code could have been merged without problems, but you refused to take the small, objectionable part out of the picture. (For those interested: http://mcentral.de/~mrec/patches/v4l-dvb/hg_v4l-dvb-experimental_01.patch The patch changed the internal tuner API and required changes to all tuner drivers.) Your all-or-nothing approach didn't work out. Out of curiosity: How does your userspace approach solve the hybrid (analog/digital TV) tuner problem which was the only objectionable part of your work? And why are the kernel parts of your new interface now less objectionable? What changed? Johannes -
As for future projects I see other people having the same problems if they want to join the project. If deeper requirements and/or ideas will come up some particular people will try to run their own game. If I'm doing something wrong technically then state it out show me the bugs that I can understand what I did wrong or what I am doing wrong. As for design changes if someone thinks he has to deny something he has to state out _why_ and not only some overall You identified it already the right way in one mail much earlier. It's a messup caused by many people and not only by one single person. the driver itself still evolves, so the main point is in getting those incomplete APIs to support further requirements. Instead of acknowlidging and seriously discussing the solutions of others all that's beeing done now is to redo things hundred times and splitting development one side beeing more open (which is the userspace work) and the other part beeing more closed to a few people only (the inkernel work). It's not my task to convince myself to rewrite the base of something which I don't think that it would be valueable. The one who wants me that I spend days in changing my code should try to convince me to change my mind on that, unless he can provide patches which demonstrate that his changes are definitelly an advantage over what has been done from my side. I will for sure acknowlidge everything that will seriously improve the work The main problem is moreover that the RFC didn't get discussed properly, afterwards people wondered what happened, even though the sources well we got far enough that I end up to step away and preparing the sources to be able to get submitted beside linuxtv since I don't/didn't get any useful technical feedback there. Convince me that my work is welcome then I might start to submit smaller patches, I already spent days for exporting patches in history and it all end up nowhere but in unfriendly discussions - which also turned me to ...
Well, this was what adq and myself did with libdvbapi and mti, (much before UIO was announced at LK.) It is not tied to I2C either. But, according to your statements (with regards to i2c-dev) you can handle only some I2C based devices, which is in fact a subset of a subset. Also not to forget that hardly a few I2C devices are in fact "truly" I2C compatible. In fact many variables to be considered. Also there is to consider a non technical aspect, whether vendors will misuse this interface for binary only, undermining the efforts put in for OSS drivers. Manu -
I2C is the main communication path for it, although there are callback mechanisms available which add the possibility for different configuration The analogue tuner core is also only for i2c only devices which most What holds companies for using the current available code putting it into an rpm or deb package and releasing such code now? The Avermedia example I pointed out to is a good example already. As from my side I won't release binary drivers. Although on the other side: * are drivers from vendors which work through several kernel versions that bad? * Why did someone duallicense videodev2 with BSD/GPL? I would appreciate if someone else on the list could also comment the reason that drivers should all be included in the linuxkernel just because forcing the companies to release binary drivers because of that. My opinion about that is if a company wants to go opensource they will do so, if not they will either not release a driver or release nothing. Markus -
Sorry, i must say that what you said is wrong. The example implementation in libdvbapi/mti is I2C only with a STV0299 on the TTPCI, if that was what you meant. But if you need examples for every possible interface, then probably you are out of luck. Manu -
I didn't comment the libdvbapi/mti driver. I'm quite confident that non I2C protocols can be handled by a callback function. In the end it's either a usb control command or pci mmio writes in the current usual cases and such calls could be handled behind a callback function which is implemented in the driver. Markus -
There's also DTL in some cases. It's not USB msgs and or PCI MMIO alone. The actual DTL spec is unfortunately not open. Manu -
I know for certain that adding a userland API tuner/demod interface to the kernel, allowing non-caring opportunistic silicon or board vendors to developer closed source proprietary drivers, will have a negative effect on the community and we'd set back linuxtv 3-5 years. I know for certain that it would happen. Trust me. I've told you this countless times and you're not hearing me. Hauppauge have some leverage with Conexant and NXP to release public datasheets. If they just have to release a demod.so (or similar) loadable, they'll defer to the board vendors and we'll see the certain board vendors 'locking other board vendors' out of their drivers. We'll see embedded firmware, not shared between drivers. Except, it won't stop at demod.so. It will extend into unfixable bugs for VendorB's board, because VendorA doesn't want to release a new demod.so, and VendorB has no linux resources. What happens next? For financial reasons - demod.so will begin to include checks to see if specific PCI or USB devices are present in the system, and will fail to work properly (if at all) when they're not being used with the preferred products. Read my lips: For commercial reasons, this enables driver components that only work if specific boards are present. - Steve -
Steven, what stops vendors of using the current existing code to achieve that goal. They could provide binary drivers with the existing API. What stops companies to intercept the ioctl calls and overriding some I2C commands? Since you know about windows drivers (at least I think that you know about it) you might know about the limitations of the v4l/dvb API in general the reason just put as much code as possible into the kernel just for forcing companies to release code under GPL doesn't seem to be valid. How about proprietary video formats, would you also place the decoding algorithms in kernel just to force companies to release their code for it? What do you think about the existing usbfs implementation, which allows to implement usb drivers completly in userspace? What do you think about IOMMU? please answer those questions. thanks, Markus -
Because the good people in this mailing list are keeping them honest. Give any board or silicon company the ability to protect their IP, even in the smallest way and they'll do it, and for no good technical reason. It's a cut throat market and it's not clear that everyone understands just how thin sales margins really are. That means Hauppauge potentially releasing a binary driver, because it's much easier than seeking silicon vendor permission for a public diver. The net result of that would mean I'd have to leave the company and find another company that practices the one thing I truly care about .... open source and open development groups. I'm keeping Hauppauge honest with their Linux involvement and I'm not alone. Other devs in other linux subsystems in other companies are doing the same thing. Binary drivers (or binary components) leads Linux back in time. Why would a company want to do that? Companies don't do that, hackers do The kernel has no good API for those, each new type of video device and suggested API is judged on it's own merits and discussed on the mailing Those are not my problem and I don't use them, you should raise that with the relevant usb-dev mailing lists. I'm here because I care about Just because AMD or INTEL want to invent some whizzy new technology it doesn't say anything about the TV card development and retail business. Intel and AMD have teams of Linux engineers helping operating system developers bring their ideas and technologies to new platforms. That's a million miles away from any of the TV board vendors I know of, who have little or NO fulltime linux developers and consider the < 5% market fringe at best. Markus, senior devs in the LinuxTV group are telling you, based on their commercial experience, that userspace access is technically great, but long term it will be used against the community and will ultimately hurt linuxtv development. If you want to reply and have the last word, go ahead, ...
well you could already release binary drivers if you would be concerned about it, so again all that seems to be no reason for me. What stops Hauppauge in implementing drivers another way? For example the UIO thing, accessing MMIO through userspace, also accessing usb control messages from userspace. Because of that reason since it is already possible to provide binary drivers your reason is again not valid. The code which the userspace tuners are connected to is GPL so what. Beside that Hauppauge is not the only company out there although I also Please point me to the part where I am passionated about protecting any of my opensource code which is currently available. just to achieve what you're trying to argue with that companies could use some odd constructs which could be used to publish their drivers as my experience is that there's no way of discussing things properly with some guys there. Hey if someone wants to get his device work somehow he's invited to join the whole project, what happened with that project during the last 2 years (and probably before already) I'm not sure if you are aware of that userspace usb video driver which got published on the video4linux mailinglist. It hijacked ioctl calls and used usbfs for having the whole driver in userspace. I would like you to have a look at: http://www.harmwal.nl/pccam880/ "This is a user space video4linux driver for the PC-CAM 880 and other it helps to virtualize devices and introduces newer features for that. Some interesting projects could be derrived out of that, there are quite a few interesting papers floating around how drivers could be I've seriously seen where senior devs lead other people during the last year, repeatly pointing to wrong solutions and finally redoing things a completly other way. Protecting their own interests and not seriously looking to get It doesn't really work out to work with those 3-5 "core" people who are active there. It starts at the point where RFCs are submitted and ...
IOMMU can be considered similar to the AGP GART, which is similar, remapping the Addresses, as far as i understand. Though you get a physical to virtual translation, what about interrupts, yet to be seen with how to do it with multipath scenarios. Something that i happened to read https://www.gelato.unsw.edu.au/archives/comp-arch/2007-March/007370.html Even Documentation/Intel-IOMMU.txt, doesn't seem to paint a very rosy picture Manu -
Common new IOMMUs have only very few in common with the AGP GART. In fact, with current modern IOMMU hardware it will be possible to implement secure userspace device drivers that are even able to do DMA. Modern IOMMUs are able to remap interrupts. This will solve the problem with PCI interrupt sharing. Joerg -
What CPU's are we talking about ? Thanks for the explanation. Manu -
upcoming x86-64 processors from the AMD side. I'm not into what Intel is doing in that area at the moment. Markus -
All AMD64 chips have an IOMMU. Only Intel's most recent chips do. Alex -
It's not available yet, you can read more about it in the following article: http://developer.amd.com/articlex.jsp?id=101 If you're interested in it I can put together some more information about it. Markus -
It (the IOMMU) is available on all AMD64 chips. The newer virtualization stuff is only on the newer chips. Alex -
IOMMUs are not necessarily a CPU feature. These IOMMUS will be found in the South/North Bridge or even on PCI devices itself (uncommon). The Calgary IOMMU is such an example of an IOMMU not implemented on the CPU itself. Joerg -
I do understand that (an earlier reply from Grant Grundler on the same [1], while working on something else), but that wasn't exactly what i was getting at. The bridges are in fact tied up with a certain CPU class. Though your argument holds true: "secure userpsace device drivers can be implemented with modern hardware" There is a large flaw in it. (From an academic POV, you are correct) Now, if all the drivers were to depend on that certain feature, what happens to all other CPU class users ? Looking at a pile of CPU's being used, also not to forget that devices such as STB's use even very small embedded CPU's such as the PPC405 Vulcan based [2] to mobile devices such as mobile phones using ARM, Xtensa [3], OMAP CPU's/platforms, which do not in any way use the bridges nor the CPU class which you however mention. So .. we are looking at a small segment, ie. a subset of the PC users even, even if the larger segments like STB's can be ignored. This would mean that only a small subset of users using a certain CPU class can use those drivers (eventhough the devices themselves don't have that limitation, the limitation being the implementation of the driver alone), which is absurd. Manu [1] http://lkml.org/lkml/2007/5/26/217 [2] http://abraham.manu.googlepages.com/p3160033.jpg [3] http://tensilica.com/ -
This is true. These platforms do not (and afaik will not) have an IOMMU and thus its impossible to implement a secure userspace driver interface that supports DMA. In general, IOMMUs are only expected on platforms which implement virtualization, have a processor address space This is also true. But looking at the current development of virtualization in hardware on the PC market (and also the increasing amount of main memory) makes me sure that in a few years every new sold _PC_ will haven an IOMMU inside. But the problems with the other platforms or older hardware will certainly remain. Joerg -
Maybe you still don't realize how tiresome it is to talk to you. What you present as "linuxtv people block my contributions" is IMHO "linuxtv people got fed up talking to you". Because when people disagree with you, you keep rambling on and on instead of just accepting it. See, working with an Open source community requires that you don't piss everyone off, but instead find ways to _motivate_ them to help you fix the problems which prevent your code from being merged. When people are doing software development _for fun_, then it should be a _pleasure_ for them to work with you, and not a pain in the ass. You code and your arguments in this discussion may be different than before, but the thread follows a familiar pattern and will likely go nowhere, just like the many discussions before. Johannes -
Johannes, people do contribute to the em28xx project. If noone keeps finding solutions for requirements I will of course go on to find my own way. Although upcoming and even the current requirements are not met by the existing API. It's worth nothing to merge what's available now since I'm not even ok with how several issues are solved with the driver itself at the moment. I'm going forward step by step with it now. there's also an active and even problem solving oriented ML available: http://mcentral.de/pipermail/em28xx/ Also if you look at the mercurial code you'll see several people contributing to that project. Markus -
Solutions for your requirements can be reachable via a kernelspace solution: - The hybrid tuner support, that where your requirement, when all those discussions started, were already added to the subsystem. So now, an hybrid tuner can be accessed by both DVB and V4L devices; - Audio standard selection is already possible via S_STD (it is already working for a few standards, like NTSC/M JP and NTSC/M KR). Maybe more standards should be needed, but hey, we still have 34 bits available at std mask. The point is: there's no technical need for userspace. This will just add userless complexity. However, you insist with your selfish idea that every other solution, except the one you're proposing are bogus. This is not the way Open Source development works. You should listen to people. Cheers, Mauro -
It's far more complex as the thing which is implemented there. The only thing that has been implemented is that one moduleformat can be loaded by the v4l and by the dvb framework nothing else at the moment. I told you at the kernel summit about that and I think you knew about that before. Just to quote some text: "Right now, a separate instance of the driver is used for analog / digital tuning. In order to use a single instance, we will have to store a pointer to the dvb_frontend structure on the bridge level, but there are various other prerequisites that must be dealt with before we get to that point. Let me quote some text where you've been in CC and which didn't get far enough to get a solution implemented. (Michael Schimek) We cannot add new standards for each of these files because only six bits are unassigned in the lower half of v4l2_std_id. It seems unecessary too, please correct me if I'm wrong. (Well the driver could define its own video standards for each of the firmwares and put them into the upper 32 bits of v4l2_std_id, which were set aside for this purpose. But adding standards to the API also has its advantages. Maybe it's time to reserve bits 40-55 for future expansion.) I suppose you choose firmwares with IF or baseband sound output I pointed out a few requirements which didn't get commented at all, and I explained why things where done in a particular way. Markus -
Maybe it is still not perfect. Feel free to improve it. Several people from the community, including me, already offered you help to add your driver, reworking on the 5% of the stuff that aren't compatible with the We can use the full 64 bits of v4l2_std_id. We just need to take some care. Due to the lack of __ucmpdi2 on ppc32 architecture, with some gcc versions, a hack were added at v4l2-common.c, that truncates it to 32 bits, at the function v4l2_norm_to_name(): http://git.kernel.org/?p=linux/kernel/git/mchehab/v4l-dvb.git;a=commit;h=412297d31d439... So, using more than 32 bits is possible, providing that we change the implementation of v4l2_norm_to_name() or find a way for it to work with ppc32. Instead of just adding a standard for each possible combination, we may just add bits for the supported audio formats. For example, we can use the bitmask as: #define V4L2_STD_AUDIO_NICAM_A ((v4l2_std_id)0x04000000) #define V4L2_STD_AUDIO_A2_A ((v4l2_std_id)0x08000000) Since for all other chipsets but xc3028, all audio standards are supported, maybe we can, instead, use a negate bitmap logic for the non-supported audio standards. Something like: #define V4L2_STD_AUDIO_NOT_NICAM_A ((v4l2_std_id)0x04000000) #define V4L2_STD_AUDIO_NOT_A2_A ((v4l2_std_id)0x08000000) And define some macros for the specific standards you need. For example: #define V4L2_STD_AUDIO_NOT_ALL V4L2_STD_AUDIO_NOT_A2_A | V4L2_STD_AUDIO_NOT_NICAM_A #define V4L2_STD_PAL_BG_A2 V4L2_STD_PAL_BG | (V4L2_STD_AUDIO_NOT_ALL & !V4L2_STD_AUDIO_NOT_A2_A) This way, V4L2_STD_PAL_BG will mean that this PAL/BG accepts all possible audio standards (being binary compatible), while V4L2_STD_PAL_BG_A2_A will mean that only A2 response 'A' audio format is supported for PAL/BG. -- Cheers, Mauro -
For clarification, Markus is quoting me, above. The idea is to eventually store a pointer to the dvb_frontend structure on the bridge level to be used as a single entry point between the analog and digital subsystems. However, we are not yet ready for this, as the refactoring process has a lot more to be done beforehand. Phase 1 of the refactoring was to implement the core changes required for a single module to be used by both v4l and dvb, and to convert the existing tuner modules to the new internal API. Phase 2, a work in progress, involves the removal of duplicated code. For example, the current code in the master branch still has tda8275 / tda8275a analog code inside of tda8290.c, where the digital tuning code is in tda827x.c ... This was resolved in this changeset: Move all tda8275/8275a tuning code from tda8290 module into tda827x module http://linuxtv.org/hg/~mkrufky/philipsNXP/rev/09c2e16a8cdd This code is working fine, and I have it pushed to linuxtv.org for the sake of testing. I have not requested merge to master because I still have some cleanups to do, and I do not want this to go to 2.6.24. (side note: basic support for TDA8295 + TDA18271 has been added to my philipsNXP tree, as well) Tuner-simple and dvb-pll will have to undergo a similar treatment, and it's not going to happen overnight. But I *am* working on it. I've outlined a basic roadmap to the refactoring plans in my original RFC: http://linuxtv.org/pipermail/linux-dvb/2007-August/019950.html What I didn't mention in that RFC, however, is the method in which I plan to remove the multiple instantiations of the tuner code for a single piece of hardware, by moving the dvb_frontend pointer to the bridge level. Since this change depends on the other refactoring to be completed first, I found it unnecessary to explain this in detail at this point. When the time comes, a new RFC will be sent out to deal with that matter. There is no reason why the Xceive driver cannot be merged into ...
Hi, I think this will require a rethink of either how the em2880-dvb driver works or how frontend drivers work. The current API expects users to initialise their frontend and then bind a tuner to it. em2880-dvb is a sort of subdriver that attaches to the main driver, and doesn't have any control over when or how it initialises its tuner, so it can't delay tuner initialisation until the frontend has been initialised. (I don't think it's the only hybrid driver that I'm not convinced this is entirely true. In order to avoid unnecessary reinitialisation of the device, the driver needs to know whether the device is in analog or digital mode, and I can't see a way of doing it with the current API. (I think existing drivers, such as the xc2028 driver in one branch, use the older analog API and make the digital driver a wrapper around it.) Again, I may be missing something. Aidan -
For sure there are some ways. One dirty way would be to add an static lock at xc3028 driver. You can rise the lock when firmware is being uploaded, removing it at the end. This would prevent the troubles you've mentioned. A cleaner way would be to create a tasklet for firmware upload. This will also prevent the driver for a long load time, due to firmware initialization (a similar change were recently added at ivtv driver). For sure there are other ways of doing this. Cheers, Mauro -
The em28xx/xc3028 is in fact not too complex. Just for sake of demonstration, some time back i had posted a dummy driver how it can be done in a nice and clean way as an example. The patch assumes some additional standards, you can ignore them. But you get the general idea from in there. You can read this post also for some additional information. http://marc.info/?l=linux-video&m=117922735929375&w=2 Use the ideas as you deem fit. ;-) Manu -
Of course, people who own such a device and want to use it with Linux have no choice but to work with you. And you do a good job for your users, you support them well and in return they contribute info and patches to support new devices. But the thing is that at mcentral.de you're the man at the top, and your users will hardly disagree with you on core technical questions. (Well, admittedly I'm speculating here as I don't read your em28xx list.) On for drivers/media/ OTOH you are just one developer among others, and some of them choose to disagree with you. Even worse, IIRC there wasn't even _a single_ other developer willing to ACK your offending patch. Now, doesn't _that_ get you thinking? Johannes -
they can. Put technical issues infront of everything also see the whole picture that userspace tv applications have to support there was not a single developer of the old crufted developers who didn't bring the project forward during the last 2 years. it gets me thinking. Some core developers who I met during the last few weeks (kernel summit, suse conference in czech) told me to go on with it actually because the final plan isn't that bad.. I don't expect anyone of the old crufted v4l/dvb (well many of them already left the party) will join the game... (I'll leave that open here) spend some time read the whole history of this thread and it will show up what this all is targeting at. I'll answer your questions with technical reasons why I'm doing all that stuff that way if you'll just ask. Someone told me during the last 2 weeks "but v4l2 was about to solve all those problems" it didn't. (point) and I think I explained good enough why all that crap still goes on as it is. Beside that I'm just curious how much did you contribute during the last 2 years to the lkml/linux kernel, and how much do you want to contribute in future? (also from my side talk is cheap (even for me) but getting something done costs quite some time and feedback from other people) Markus -
Contributing doesn't necessarily means submitting patches. There are several good guys at the community offering very valuable contributions, like patchset reviews, good comments, userspace experiences, etc. Johannes does a very impressive work of maintaining, almost alone, LinuxTV website, upgrading the system, monitoring disk spaces, taking backups, etc. Also, he is always available to discuss the most important changes at APIs and to defend the Open Source community, providing his very clear point of view. Thank you, Johannes for all your good work! -- Cheers, Mauro -
I was referring to your code you posted for merging on linux-dvb, and which got rejected. Anyway, it's easy to agree with you if one has just heard _your_ version -- the purpose of this thread is to give people an alternate version of the story to complement yours, which would allow the people you talked to to think it over and change their mind. See if you can get of those people you IOW you say if I don't write code I should shut up? Is that also what you tell users on your em28xx list when they dare to disagree with you? Nice... Johannes -
Everyone knows that there are some issues even some internal ones which I'm not part of. Not sure if you met some other kernel developers recently, all you can hear is "those crazy media guys" (which just includes everyone This is a free world you can write whatever you want, but if you want me to change my code you need to convince me that I should acknowlidge your ideas. And by not acknowlidging my requirements don't expect that I will go back to the start and try to reinvent the wheel. After almost 2 years I'm quite into those things and I know what I want for my project and what I'll try to achieve with what I'm doing. Markus -
With respect to your kernel-userspace API for xc3028, you made something that seemed to be a dream: there's a consensus: not a single developer believed that this is the better way; nobody seems that this is the better approach. So, or you are the only media developer with good sense in the face of the Earth, or you're incapable of understand the obvious: you're wrong with this approach. IMO, the answer is quite obvious. -- Cheers, Mauro -
Not a single developer out of 3-5 people? Seems fine with me, because people didn't agree with anything else before either and tried to point me to wrong solutions. that for you don't have to use it. http://mcentral.de/wiki/index.php/Userspace_tuner#Advantages I'm off for the weekend now so have a nice one :-) Markus -
Enjoy your weekend. I really hope that you have some time to reflect and review your positions during the weekend. -- Cheers, Mauro -
Yes, as a newbie observer on the v4l list, the answer is obvious to me, at last, and the reason is not entirely technical. I can't read so many bogus arguments on so few lines without reacting. Rephrasing Mauro: "Not a single developer out of a few SEEMS to believe that it is the BETTER approach, so since the FEW represent ALL media developers in the world, and since there is only ONE RIGHT way to do things, and since the GROUP is always RIGHT and always knows better than the individual, then YOU're WRONG and I'm right. Conform to the group and do as the group says, whatever the consequences!" Geeks are decidedly as prone as others to blindly accept travelling on the slippery road of herd mentality and "obvious" conclusions based on appearances. Is this OPEN source development or a dictatorship or what? So in the end Mauro will be right. And Markus will continue to develop and defend his stuff as HE sees fit. He knows his own work better than anyone else. It will be HIS way or nothing with his own stuff, it's his inalienable right. And don't be naive, if there's no solution more viable than Markus' one, then the latter will eventually be widely adopted somehow, sometime, whatever the amount of grumbling from the establishment. No dictatorship/forced consensus can decide future's direction, nor improve its already low own viability. Cheers, Bernard. -
It's called peer-review. It's why the linux kernel is as good as it is today. Yes, the tuner belongs in kernel-space. I'll use the user-space version from Markus in my ivtv driver as long as there is no alternative, but as soon as the same tuner is merged in the kernel I'll switch to that one. Why? Because the end-user shouldn't have to install a userspace daemon just to support a stupid little tuner. I've said this before, and I'll say it again: the sole reason for this mess is personality clashes. Technically it should have gone in two years ago. I worked two years on getting the ivtv driver (and supporting i2c drivers) merged into the kernel, in the process of which many V4L2 (and a few DVB) API additions and refinements were made, all by working with the core developers. The end result was much better than if I would have done it all by myself. It can be a difficult process (it's always hard to accept that the other person is right), and sometimes it means you have to sleep on it for a few nights before you realize that you are wrong and the other person is right. It can also go the other way, but even then it helps you because it forces you to express the technical reasons why you are right. And that gives you a better understanding of the issues at You're never alone. You work within the kernel framework and within the v4l-dvb framework. You want to get something done, then you'll have to work together. The linux project is no different there then working for a company. And no, Mauro isn't always right. But just saying 'I'm right, you're wrong' never helps. Never, ever. Arguing your case based on technical arguments is the best way to go. Always remain respectful with whomever you're arguing, always remain polite. The time for rational arguments in this situation has long since passed, Sigh. Hans -
I see it exactly the same way. Well I will continue to provide an alternative stack with alternative drivers. The peer review shows that it doesn't work too well without people participating fixing problems, the initial drivers were inkernel based and due some updates in modules which are used by the em28xx some devices which previously worked don't work anymore in the kernel. As for the em28xx the driver will use userspace i2c based tuners, decoders and demodulators. The userspace modules will use unaltered sample drivers which are provided by several companies, which also saves alot time in future for that project. Those drivers will also officially be provided and recommended by the manufacturing company of those devices, including the proper firmware. Personally I won't spend any time on reinventing the wheel and fixing drivers which get broken by not taking care of it. Beside that people are welcome to contribute without having to fear a political overhead of discussing requirements and other issues when changing the corresponding alternative core code. The project and how it will/should go on is documented at mcentral.de. I also see that as a good way for the community, that way the linuxtv guys have to prove that they can be open to other people without adding too much noise and overhead otherwise people will contribute to the alternative project as some already do. Markus -
why is it mcentral.de at the moment? I started several discussions about the whole topic. The thing which is in v4l-dvb on linuxtv does not satisfy they can disagree, I even pointed out to design flaws lately when the current patch isn't offending anymore, see it as a chance I'm giving you the chance to acknowlidge what has been done now from my side. The main discussion in this thread was about drivers in userspace are bad because the API will allow binary drivers. The guy who works for Hauppauge (again I also have good contacts at Hauppauge Europe) writes it's bad - for no technical reason. If someone points out that it is bad (after reading the whole thread) why don't we put X.org, bash, well everything into the kernel? GPL is the saviour seems to be the saviour for some people in this world, but in the end it's still if people want to go that way. Much work has been done by other people before, my work is also just an additional contribution and I (again) don't intend to release binary drivers. (also keep in mind that ubuntu takes everything which makes things work - this matters to the enduser) Hey I can also write I can help you to get things right with some other people, and I can financially support people by giving away hardware and even specs for free in some cases. Who is able to do that from the old crufted v4l/dvb guys? Manu throws his drivers over the wall to the OSS community, although I don't mind. Mauro is copying the logic of my code and writes I told him I'm ok with taking my code without just adding a single line of how his driver got developed. (I still wonder why he skipped some significant parts of the driver .. because he used the existing one as logic template) http://linuxtv.org/hg/~mchehab/tm6000-new/log/14352ab89146/linux/drivers/media/video/t... (not looking at the specific changeset but he copied the firmware oh yes. Markus -
No. The focus is that userspace API is not needed at all, and the community believe that this is a regression from all efforts that are Markus, you are thinking that all the community are fool? You used to state on your website that your intention were to release binary-only xc5000 drivers. So, please stop with childish and assume what you've The basis for tuner-xc2028 driver is tea5767. The xc2028/xc3028 drivers is very simple: a) load the proper firmware; b) send one 32 bits command to select frequency + the frequency divider. All the rest is the common logic of a tuner driver. If you take a look at my driver, you will see that the implementation is different, providing also those functionalities: - provides a sync during frequency setting, needed by tm6000; - has the logic to retrieve signal status; - part of the firmware need to be reload every time you change a freq (tm6000 driver needs it); - supports just the firmwares I've identified as being used by tm6000 driver; The only thing I used is your usbreplay.pl, as properly stated at README.first (properly pointing to your site). Again, please stop with personal attacks. This leads to nowhere. However, I keep open to accept your kernelspace em28xx/xc3028 drivers, providing that they fits at the current V4L/DVB core. Changes at common APIs, and especially at Kernel to userspace API should be discussed with the community. If you accept this fact, you may also propose improvements at the APIs. If, after all that were discussed, you're willing to do a serious work, please send us the patches for em28xx/xc3028 kernelspace drivers. Otherwise, I'll kindly ask you to take your own way and stop with those flamewars. Cheers, Mauro -
please have a look at: You're using the word "community" in a quite abstract way here. Please document how the linuxtv community behaves behind the lines, and I would even like that those people who discussed several things would start to write about their other personal issues with people talk alot, in the end only the result counts. So if you've seen any binary driver from my side point out to it. To be honest I think if I would have gone the same way as Avermedia from the beginning on to release binary drivers it would have saved months of development and the main distros could already have _full_ support for all the features. The driver as it is now is not perfect either it requires quite some more work to get all features work flawlessly around the globe for well people see if they compare the code what you took from the existing If you look at my current implementation and even the implementation which I had a year ago many problems are solved there. I don't mind if you don't want to use the userspace tuner API, it's not a replacement for the inkernel version, it makes it just easy to implement it. The current and upcoming em28xx devices will use it, just to avoid I don't even want to use that existing driver in future (as I wrote earlier already). The newer module will be a dropin userspace replacement for what's available. I got around 70 devices work with it at the moment, although I don't even want to reinvent the wheel so I'll take what I've received from some companies. That way all I have to do is to use That for I wrote the RFCs which didn't get discussed properly and where 2 people of that "community" told me to use something which won't work out at all. And hey, why didn't those guys do what they told me to do in the end? Because they wanted to do it by themself only. Although it's the base of the driver without a proper base it just screams for more work in the You don't have to use it if you don't like it, and I get around those restrictions ...
Hello Markus, I am not saying that userspace is bad. In fact i am all for userspace, _if_ there is much of a complication. For example we have had largely complex devices. You might like to read this thread a while back. This was the reason why we started up libdvbapi/mti (For those who don't know what it is, libdvbapi/mti is a userspace approach for having device support in userspace with complicated tuning algorithms with a lot of calculations) http://search.gmane.org/?query=Re%3A+%5BRFC%5D+Userspace+extensions%2C+was+Re%3A+%5Bli... For that demodulator and a successor for the same, i had finally moved the same to in kernel with a lot of trouble. Maybe it is not as precise as it should have been. But what i mean is that we should use such approaches if there needs to be a heavy valid reason and if there are many more devices going that way, we should definitely move to userspace. Maybe the userspace idea is a bit still immature. That said, i don't see any such complexities with the XC3028 Manu -
It sends a shiver down my spine that seem to imply that you use your Hauppauge Europe contact to lobby against the efforts of Hauppauge USA employees to promote support for After you dismissed all arguments except your own as invalid, you've now moved on to the "post bullshit and personal accusations" stage. Yeah, right. Johannes -
The GPL - derivative work is the boundary not code linkage. Possibly a userspace tuner hack would probably fit this too. Especially if a specific vendor is No, I would assume they'd provide a proprietary conversion library that no nobody would use (just like their hw). We keep format conversion firmly seperated from hardware I/O processing. Alan -
In general there are known formats available, the drawback is that every TV application deals with it in a non-unified way at the moment, meaning alot code duplication in userspace since there's no library available at the moment which does the videoconversion from one to another format. Such a library is beeing developed at the moment which gets plugged infront of accessing the devicenodes. Although in the long run I'm looking forward to reuse the userspace tuners with such a library infront of everything by using i2c-dev. This would also make it easy to reuse the sample code of several companies, without having to cut out several features of the drivers and to rewrite them to an inkernel format. Markus -
IMHO... The reason why there is no single 'format conversion library' that everybody uses is because of the large differences between requirements for such a thing. The line between 'format conversion' and things such as a video codec, or image processing is very vague. For example: Some apps just want compressed video format output. Would video compression be part of such a 'format conversion library'? If so, then which compressed video formats? Proprietary ones too? If not all formats that exist are supported, it would not be complete for some or many apps, and maybe not even useful at all (because integrating any necessary pixel-format conversion into the compression routines may be more efficient than making multiple passes over the data with separate libraries). Will the library include resizing? If so, which resampling algorithms? Then how about rotation? Then maybe geometrical mapping (games could want that)? Will the library be able to adjust brightness/contrast/saturation in software? If so, then what about noise filtering (which algorithms?), etc... perhaps the library should go all the way, bind to port 80 and serve-up a live video stream 'youtube-style'? ok, now that would definitely go too far... The question is: Where exactly to put the boundary? My point is that format conversion is not a video capture driver issue. Sure, it is convenient for apps to be able to use standard libraries that perform certain functions with optimized code, etc, but for the purpose of capturing video (media) it's not always necessary to convert the output into something different before the data is useful for an app. Certain format conversions can be done very efficiently inside video cards, for example, and an app may prefer to use that. If a video card has such functionality, access to it should be part of its driver. Applications needing format conversions would benefit tremendously from a good, powerful, flexible, efficient, etc, library that removes the necessity for ...
good statement, the absolute goal should be that enduser applications can handle videostreams as easy as possible. This is currently not given. For example I have devices which work with ekiga, and some devices which don't work with ekiga. Why so? Ekiga already uses a rather big library for handling videodevices. Another point is why doesn't tvtime support digital audio? People have to run sox in the background to get any sound piped from the corresponding dsp node to the soundcard, and also this is no general way. So first people have to look up what the correct audio node of their TV device is... (there are small scripts available which lets the users select) But I also think this should happen automatically. There are many devices out there which don't even include all ioctl calls which are documented in the specs. And since sometimes the API needs to be updated a library could handle this in a better way. I see the whole v4l-dvb project as half way done at the moment because of this is just a thought, I think a pluggable mechanism would be nice for that. The library could query the device about it's capabilities and if it returns a non standard videoformat just add a mechanism for loading the corresponding I would prefer to abstract the ioctl calls from the media applications if possible. Sometimes API changes are unavoidable and even make sense instead of carrying around old crufted mechanisms, and since there's currently not a single TV application out there which supports all available devices it would yes there are many ways. I like the idea of such a library because it could even allow to integrate complete userspace drivers in certain cases. I posted a link within that thread that there's a driver which intercepts all ioctl calls and which is completly done in userspace. By using a library the LD_PRELOAD hack wouldn't even be needed and that device could be integrated flawlessly into a video infrastructure. I know that such a userspace driver would be slower ...
Agreed. What I think it should happen is that the userspace library should focus at the "weird" codecs. E. g. those which uses some sort of proprietary format. This way, an userspace app may use the userspace library as a "fallback method" for unknown FOURCC formats. The result will be probably far away from an optimal result on some cases (since it probably mean double buffering), but this will at least allow userspace apps to work. As performance become an issue, the userspace app developer may use the GPL code at userspace API as a reference to write a proper optimized format driver for its apps. Just my 2 cents. Cheers, Mauro -
You can dynamically load libraries based on constructed path names which means you can write a simple library for media conversions which in turn will try and open libv4l-format-ABCD.so for any format it doesn't know - and thus is extensible -
I do confirn that I have all this, Steve mentions, really have seen already! Markus, sorry, they did abuse it and will do it again. Hermann -
> > * Why did someone duallicense videodev2 with BSD/GPL? Originally the BSD people wanted to share the interface for user space compatibility. The kernel however is GPL so the BSD licence on some bits of the code isn't really relevant as the combination of bits you depend upon is GPL, will remain GPL and the only way to do a binary module would be to show Agreed entirely -
