Mailing List archive

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

[linux-dvb] Re: Streaming from hard disk



Gert-Jan van Dijk wrote:
Hi,

I'm working on a STB implementation, we chose the DVB-API together with a Linux Platform to start with. This will ease developement, and give us better debugging tools ,and the possibility to stream our test TS's.

Now in the latter lies the problem. If you take a look at VDR, it uses streams to playback recorded events (AFAIK). We, however, want to be able to use our teststreams to test our stack, and thus zap from one service to another, ie the middleware stack doesn't "see" the difference between a HD feed, or a FE feed (there is a logical device abstraction layer, to, amongst other things, make it HW independant (at least we hope ;-) )).

As of last week, I was able to fool the stack (upon a zap to another service) by first stopping the filters (and thus the streaming from HD), then stopping the decoders, starting the filters (on different PIDs, and the streaming) and starting the decoders. In any other order would cause the demux write function to lock.

But, as of now, we don't have hard-coded pids anymore, we retrieve them on the fly from the PMT. You see, we have a problem, as the PES filters are stopped, and thus our PSI/SI parser cannot retrieve the PMT.

What I did, and did not:
1) I did tincker with it quite a lot, but see no way to make it work.
2) Tried the newsgroup to look for related topics. No luck.
3) Did take a look at the release notes of newer drivers, but didn't find related issues being resolved.
4) Did NOT look at th driver code.

So my questions:
1) Is there another (hidden/unknown (to me?)) API that I can use?
2) Is this not foreseen in the driver, and yes, this is not a feature to be expected, I agree?
3) What I would like is that HD streaming would be independant from PES filtering. Sure, I need to give a symbol rate or something, but that's no problem.
a) Is such a feature available?
b) If not, can I make it in the driver, and can somebody point me into the right direction?
4) Am I missing something obvously, and did I perhaps take the wrong route?
We used a modified PCI DVB card for this purpose - one where the frontend was replaced by a ribbon cable which is used to feed a TTL MPEG2 transport stream transparently into the card.

But you can do this in software, too - in this case you need to implemend a dummy driver that implements a pseudo frontend (see e.g. http://linuxtv.org/cgi-bin/cvsweb.cgi/dvb-kernel/linux/drivers/media/dvb/frontends/dvb_dummy_fe.c?rev=1.5&content-type=text/x-cvsweb-markup - you would use this to switch between different streams from your disk or to switch between different streams from network streaming servers) and some code that registers a software demux and calls the dvb_dmx_swfilter() callback with the data read from disk or a network connection. Since multiple people asked for a solution like this we highly welcome patches implementing such a debugging driver.

Faking the video decoder is somewhat more tricky, if you need one it's probably easier to grab the solder iron and use the ribbon cable solution.

hope that helps,

Holger



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



Home | Main Index | Thread Index