Mailing List archive

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

[vdr] How is cDvbDevice::ProvidesTransponder supposed to work?



Hi,
I have tried to get this working for quite some time. I have found a solution but I'm not sure this will be working for all users. For an obvious reason cDvbDevice::ProvidesTransponder is always returning "false".

Can someone please enlighten me and explain the "why" of the bit mask operations to me?

As far as I could see cSource::st_Mask and cSource::stSat are constants and the Diseqcs.Get() method returns always NULL.
The fact is that the only variable in this line is Channel->Source() and on my system it is always staying between 32768 and 65535...
Or can it possibly have higher values if you have a two-card-system?

The main reason I would like this method to work correctly is a possible audio pid change during a recording. If a recording has started with only one Apid and during the recording a second one is coming in, then it won't retune because in vdr.c there is a check implemeted to see whether the current DVB card has to be retuned or not. That's where the problems with cDvbDevice::ProvidesTransponder starts.

This is the line:
if (cDevice::ActualDevice()->ProvidesTransponder(Channel)) { // avoids retune on devices that don't really access the transponder

I changed it to:
if (cDevice::ActualDevice()->ProvidesTransponder(Channel)||cDevice::NumDevices()==1) { // avoids retune on devices that don't really access the transponder

and on a one-card-system this is working quite well. (Maybe this is actually the solution, but I doubt it...)

Can this retune mechanism please be overlooked?
Me and some other people would really appreciate it.

Thank you a lot in advance.

André.




Home | Main Index | Thread Index