Mailing List archive

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

[vdr] Re: Conditional access questions



On Wednesday 15 December 2004 22:18, Klaus Schmidinger wrote:
> Mark Watson wrote:
> > I am trying to get VDR working with a somewhat custom setup and would
> > appreciate some help.
> >
> > Basically I have modified a digital STB to get a DVB stream out of it. I
> > wrote a kernel driver so that it is presented to Linux as a normal DVB
> > device. The frontend device is implemented by sending IR commands to the
> > STB using LIRC (and a horrible userspace/kernelspace hack using named
> > pipes and filp_open!).
> >
> > The problem I have is with handling tuning and conditional access
> > properly. I have to tune to the correct channel, not just the correct
> > transponder. This is because the box only descrambles the current
> > channel. Ideally I want to be told by VDR "tune to transponder X to
> > listen to service Y" all in one request.
> >
> > As a temporary hack I generated a custom channels.conf with the service
> > id in place of frequency. To tune I simply tell the STB to go to the
> > channel containing that service. This mostly works except I lose the
> > ability to have automatically updating channels.conf. It also seems ugly.
> >
> > I presume this should be done using the CA device, but I can find no
> > documentation on how this works:-( Can anyone suggest anything? Has
> > anyone else tried anything similar?
>
> Why don't you just create a plugin something like the 'sky' plugin
> that comes with VDR? In there you can take whatever channel data
> you need to do the switch.

I have taken a look at the Sky plugin (thanks for pointing me at that). The 
approach there is to use a new device, for channel switching and video input. 
I guess that would work if I derive from dvbDevice, just changing the channel 
switching code. Would something like this make sense?

i) Prevent dvbDevice from setting up device 2 (my USB DVB stream from STB) by 
starting vdr with -D1 (I have a Technotrend DVB-S on 1 for output).
ii) Derive a class from cDvbDevice, with the only change being ability to 
install custom cDvbTuner.
iii) Derive from cDvbTuner a version that calls into my tuning code (Lirc + 
some demux listeners to confirm change).
iv) Derive from cPlugin. In Initialize create an instance of my derived 
cCustomTuneDvbDevice.

I also thought about using a cCiHandler, but I think I'll end up doing 
multiple channel switches that way. Which would be too slow...

I also have another bit of functionality to add in my plugin. I'd like to make 
VDR periodically tune to a channel that carries all of the EPG data -> not in 
DVB format:-(. Then I'd like to feed that into VDR. Can anyone suggest how to 
do this cleanly? I see the EITScan calls the tuner periodically, so there is 
some kind of functionality to do this. I guess the options are either to do 
something based on EITScanner or somehow find out when it is a good time to 
do the scan myself. Thoughts?

Thanks,

Mark








Home | Main Index | Thread Index