Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[linux-dvb] Re: [PATCH?] proposed rewrite of skystar2 filters



Roberto Ragusa wrote:
On Wed, 03 Dec 2003 10:22:31 +0100
Niklas Peinecke <peinecke@gdv.uni-hannover.de> wrote:


This is necessary to avoid the situation that you can close down the ts (opened by overflow) by removing a 0x2000 that was not added.

I'd like to know exactly how the driver cooperates with dvb-core.

For example:

- is it possible that we're asked to remove pid 0x2000 when it was
never added? I'd expect that dvb-core should never do such a request
to us
That's the expected behaviour.

- is it possible that dvb-core asks the same pid twice? I'd expect not
I'm not perfectly sure about this, I would need to check the source code. I can imagine a situation where the application requests similar but different filters on the same PID. I don't know for sure how this is handled right now, please check the code.

- does dvb-core maintain a list of active pids? (yes, we said that
we can open whole bandwidth when out of hw filters)
yes, the demux maintains the complete feed and filter list, you can access the demux pointer through feed->demux.

- does dvb-core maintain ref counting for pids? if yes, we don't have
to do it, it will only ask when ref count is zero
no. The demux only maintains the list of active filters, you have to analyze them on your own - the generic code can't know which filters need common ressources on the hardware.

- is dvb-core able to send the same pid to two applications?
In theory yes, but this code was never well tested.

There are some issues because the current ringbuffer implementation, feel free to improve this. Oliver Endriss wrote a generic dvb_ringbuffer a while ago but never had the time to clean up the dmxdev.c code and make this use the new code. Patches are welcome.

I've not found a clear description of the behaviour of dvb-core
anywhere, not even in the API docs.
:) Are you willing to prepare one?


I coud study the code to find out, but it looks like there is support
for some extra stuff that it's not present on Skystar2 (MPEG decoder,
CA descrambler...), so it's not easy to understand everything exactly.
It's probably the best to read the code as final reference, but if you have question please ask here, we'll do the best to help...


BTW, another question:

If I want to record a video/audio stream I set pids and read from dvr0.
But if I want to record another v/a stream in the same time, I can't
open dvr0 again (correct me if I'm wrong).
The only solution is to ask 4 pids from the beginning and demultiplex
in user-space.
Am I right about this limitation?
Yes, right now there exists only one ringbuffer for the entire dvr-device you would need to implement one ringbuffer per opening client to handle multiple reading clients. But they would get all the same stream

You probably want to read PES packets from the demux device by specifying filter.output = TS_OUT_TAP for recording and multiplex or reencode them in your recording application. Marcus' replex code is a good example code to show you how to multiplex TS, AVI or PS streams you can burn on DVDs.


I have the sensation that dvb-core was born just to direct the a/v
pids to the hardware mpeg decoder and the rest came as a second
feature.
yes, things have been growing there by historical needs, patches to clean this up or improve this are always welcome!

Holger



--
Info:
To unsubscribe send a mail to ecartis@linuxtv.org with "unsubscribe linux-dvb" as subject.



Home | Main Index | Thread Index