Hi, Manu Abraham schrieb: >>> The patched version doesn't look at the device capability flags, before issuing a tune ? >>> Or is something else wrong/missing ? >> >> I must admit, I didn't have a look at the source code so far, but >> from what I recall, I don't think that it is that easy. I think, >> a simple check will only make VDR tell you that the channel in >> question cannot be received. >> >> I've experienced myself that VDR used the DVB-S2 card for a DVB-S >> recording and then endlessly tried to switch to a DVB-S2 channel >> using the DVB-S card -- obviously without success. > > How can you ask a DVB-S device to tune to DVB-S2 ? Poor demodulator, > it has to do what it is not even capable of. :) > >> VDR's device selection logic is already quite complex. It has to >> deal with FF cards which have so far been used to watch the DVB-S >> channels, cards which provide CI interfaces and simple receiver >> cards. Moreover it now would have to deal with cards capable of >> doing DVB-S2, with or without CI interface respectively. > > The logic wouldn't be much different. It is the same as requesting a DVB-C > device to be tuned to DVB-S. The CI interface doesn't make the hardware > look any different. > >> As I'm only distributing the DVB-S2 part which Marco Schlüßler >> provided several months ago, I've contacted him and asked him for >> an update. > > Ok, I will ask Marco on the relevant. Thanks for the feedback. Well, I was in contact with Marco already and attached you'll find a minimalistic change which reports "channel not available". Now VDR should already be able to kick a low priority DVB-S recording (or transfer thread) from a DVB-S2 device. Still missing is to prefer DVB-S devices for DVB-S recordings so that DVB-S2 devices remain available for DVB-S2 recordings of same priority. The patch is incremental to the original dvbs2 patch from yesterday, i. e. you can simply apply it to your already patched VDR. Bye. -- Dipl.-Inform. (FH) Reinhard Nissl mailto:rnissl@xxxxxx
--- ../vdr-1.5.12-dvbs2-other/dvbdevice.c 2008-01-01 22:55:18.000000000 +0100 +++ dvbdevice.c 2008-01-02 22:25:49.000000000 +0100 @@ -798,7 +798,13 @@ bool cDvbDevice::ProvidesSource(int Sour bool cDvbDevice::ProvidesTransponder(const cChannel *Channel) const { - return ProvidesSource(Channel->Source()) && (!cSource::IsSat(Channel->Source()) || !Setup.DiSEqC || Diseqcs.Get(Channel->Source(), Channel->Frequency(), Channel->Polarization())); + if (!ProvidesSource(Channel->Source())) + return false; // doesn't provide source + if (!cSource::IsSat(Channel->Source())) + return true; // source is sufficient + if (Channel->ModulationSystem() && !(frontendType & DVBFE_DELSYS_DVBS2)) + return false; // requires DVB-S2, but device doesn't provide it + return !Setup.DiSEqC || Diseqcs.Get(Channel->Source(), Channel->Frequency(), Channel->Polarization()); } bool cDvbDevice::ProvidesChannel(const cChannel *Channel, int Priority, bool *NeedsDetachReceivers) const @@ -807,7 +813,7 @@ bool cDvbDevice::ProvidesChannel(const c bool hasPriority = Priority < 0 || Priority > this->Priority(); bool needsDetachReceivers = false; - if (ProvidesSource(Channel->Source())) { + if (ProvidesTransponder(Channel)) { result = hasPriority; if (Priority >= 0 && Receiving(true)) { if (dvbTuner->IsTunedTo(Channel)) {
_______________________________________________ vdr mailing list vdr@xxxxxxxxxxx http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr