Hello Holger,
I like the idea of a source based routing in Michael's approach (we've been discussing this issue before in another thread some months ago), the idea not to specify input and output device of the demux but instead specify a stream source in the decoder. This removes some ambingiuties.
Yes.
If we want to remove even more ambinguities we should distinguish in the demux API between general purpose filter banks and decoder-attached filter banks.Yes, or separate this to separate devices. The latter has the advantage, that adding specialized IOCTLs for example is really bound to a special device.
But the remaining ideas of Michael's approach don't map the current hardware enough and are too specialized and high-level, so think it's better to stick to the dedicated flexible demux device which does both packet demultiplexing and routing.I'd really like to know what stuff is not covered by my approach and why you think it's too high level.
For example. Or the hardware automatically sets up IDE DMA transfers if told so. I admit that this does not make sense for systems like Linux, where you usally don't write to any drive outside of the ide layer.You will not find a perfect combination of devices which will fit all
hardware. The question is what is the best compromise.
If you make the device API too simple the drivers will have to do a
lot of patchworking (e.g. automatically using recording units instead
of normal filters when possible/necessary). If the API supports too
many special devices the user application will have to do a lot of checking (what devices are there, how can I use them, etc.)
Can you please specify the term 'special recording unit' a little more in detail? -- Are you simply talking about hardware that does just DMA's a demuxed stream into a dedicated memory area and allows simultanous DMA transfers from this area to the harddisk?
Would it not be sufficient to add a output route into a file descriptor so that the kiobufs of the filesystem layers can get feeded using the demux DMA pointers directly (don't know whether 2.6 still uses kiobufs, maybe this has changed, but the underlying concepts are probably the same).It's indeed a problem that for a recording, all data is copied from DVB to user space, just to be pushed to the IDE layer afterwards. But this is a Linux problem in general.
Regarding the special PID and section filter devices I do not see a real difference compared to having them all in the demux device besides inflating the number of devices.
Has the approach of using a single dvb device per adapter been ever discussed? This would require adding a device id to every control struct, don't know whether this is a good idea...Another drawback would be that you couldn't use standard Linux / unit filehandling stuff like read(), write(), poll()/select() and so one. You would need to simulate this stuff with ioctls, then.
Holger
CU Michael. -- Info: To unsubscribe send a mail to ecartis@linuxtv.org with "unsubscribe linux-dvb" as subject.