Skip to contentSkip to conversation

Implementing support for multi-channel

linux-dvb Andrea 3 participants 6 messages Mar 13, 2008 – Apr 5, 2008 Media (V4L/DVB)

lore
Share & tools
lore

Andrea

author
#0 lore raw
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

#1 lore raw

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

http://www.audetto.pwp.blueyonder.co.uk/dvb.cpp

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

author
#2 lore raw
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

#3 lore raw
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 via
DMX_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

#4 lore raw
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

#5 lore raw
In reply to Andrea
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 via DMX_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