Implementing support for multi-channel
Quoted 4 lines
-----Original Message-----
Thank you everybody for the answers so far, I do have enough software-based solutions to start testing.
However, there's still the question: can filtering be done in the driver?
Have you read my last post?
http://www.linuxtv.org/pipermail/linux-dvb/2008-March/024456.html
When I talk about filter, demux, dvr, this is all in the kernel driver for the dvb.
You can find here an example of how to open the demux to get 1 PID. You can run it multiple times and get as many streams as you want
http://www.audetto.pwp.blueyonder.co.uk/dvb.cpp
Quoted 2 lines
Are there any drivers that support this or which dvb-api-functions need to be implemented?
If you want to extend the driver for the dvb, I'd like to be able to set a filter in the demux for more that 1 pid at a time.
Good luck.
Andrea
_______________________________________________
linux-dvb mailing list
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb
Sorry, late reply, been busy with some other stuff.
Back to driver-development.
Perhaps, first some background. I'm a university student in my last year and am busy with a dissertation (thesis) about DVB (in my case: DVB-s, the others (c en t) are limited here in Belgium).
The goal is to check and, if possible, optimize the performance of multi-channel demuxing/decoding. For the moment, I'm looking at 3 possible scenarios:
1) Let the end-user software do all the work (meaning: giving the whole TS to the application), this is possible with eg Kaffeine, flumotion, etc...
2) Let the driver do the work
3) Hardware
The hardware supports multi-PID-filtering, so that's not the problem, the only problem is: which functions have to be implemented in my driver? In other words: is there an application that says to the driver: give me the stream with that PID and which function is called to do that? I'm guessing DMX_SET_PES_FILTER?
Quoted 8 lines
Have you read my last post?
http://www.linuxtv.org/pipermail/linux-dvb/2008-March/024456.html
When I talk about filter, demux, dvr, this is all in the kernel driver for the dvb.
Sorry, must have missed it. You're completely right when you say the driver must be able to filter more than one PID at the same time, this is also part of my research: seeing how many PID's I can filter at the same time.
Quoted 5 lines
You can find here an example of how to open the demux to get 1 PID. You can run it multiple times and get as many streams as you want
Thanks for the example, I think it will come in handy when implementing DMX_SET_PES_FILTER
Thank you for all the help so far.
Regards,
Ben
_______________________________________________
linux-dvb mailing list
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb
Quoted 8 lines · Ben Backx
Sorry, late reply, been busy with some other stuff. Back to driver-development.
The hardware supports multi-PID-filtering, so that's not the problem, the only problem is: which functions have to be implemented in my driver? In other words: is there an application that says to the driver: give me the stream with that PID and which function is called to do that? I'm guessing
DMX_SET_PES_FILTER?
I see.
To be honest with you I don't know the difference between kernel level filter and hardware filter.
The way I see it, but I think it might depend on the card as well, is that the driver in the kernel always receives the whole TS and then does a software filter which you can trigger via DMX_SET_PES_FILTER.
I don't know anything about hardware filter.
Someone else should maybe answer this question.
Andrea
_______________________________________________
linux-dvb mailing list
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb
Quoted 20 lines
Quoted 4 lines · Ben Backx
Sorry, late reply, been busy with some other stuff. Back to driver-development.
The hardware supports multi-PID-filtering, so that's not the problem,
the
Quoted 1 line
only problem is: which functions have to be implemented in my driver?
In
Quoted 1 line
other words: is there an application that says to the driver: give me
the
Quoted 1 line
stream with that PID and which function is called to do that? I'm
guessing
Quoted 1 line
DMX_SET_PES_FILTER?I see.
To be honest with you I don't know the difference between kernel level filter and hardware filter.
Quoted 9 lines
The way I see it, but I think it might depend on the card as well, is that the driver in the kernel
always receives the whole TS and then does a software filter which you can trigger viaDMX_SET_PES_FILTER.I don't know anything about hardware filter.
Someone else should maybe answer this question.
The hardware can handle it (up to a certain number of PID-filters). The main
difference: cpu-load. When the hardware handles the filtering, the cpu can be busy with other stuff... (at least, that's what I think).
The (performance) difference between driver and software will be little, I expect.
Regards,
Ben
_______________________________________________
linux-dvb mailing list
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb
Quoted 1 line · Ben Backx
The hardware can handle it (up to a certain number of PID-filters).
For Skystar3 it is 255.
Quoted 3 lines
The main
difference: cpu-load. When the hardware handles the filtering, the cpu can be busy with other stuff... (at least, that's what I think).
Seems, that today's CPUs are capable of doing full TS decoding without any significant CPU load (for 68Mbit stream with 20 channels it is less than 5% 3GHz CPU). More, sw. decoder is not a small atomic thing, and can do many additional things. If the PID filter is in the kernel in such case, there is a chance, that we've get additional memcpy() etc.
Quoted 2 lines
The (performance) difference between driver and software will be little, I expect.
More, we can miss CPU power and increase kernel size.
_______________________________________________
linux-dvb mailing list
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb
Quoted 6 lines
The way I see it, but I think it might depend on the card as well, is that the driver in the kernel
always receives the whole TS and then does a software filter which you can trigger viaDMX_SET_PES_FILTER.
Still trying to figure things out...
I just can't seem to find out where exactly things are happening. I've been looking at some dvb-code, and when it comes to setting PES-filters, this always is done by using an ioctl-call (eg: ioctl(fd, DMX_SET_PES_FILTER, &pesFilterParams)), I'm unsure what this means... Aren't ioctl-calls ment to be handled in hardware? This would mean that the filtering used by eg. dvbstream is already done in hardware... Or am I missing something?
Greetz,
Ben
_______________________________________________
linux-dvb mailing list
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb