[ANNOUNCE] DVB-S2 + H.264 support for VDR-1.5.12
Commit Message
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.
Comments
I have an problem with the original patch to vdr-1.5.12:
root@video:/usr/local/src/vdr-1.5.12-dvbs2# make
g++ -g -O2 -Wall -Woverloaded-virtual -c -DREMOTE_KBD
-DLIRC_DEVICE=\"/dev/lircd\" -DRCU_DEVICE=\"/dev/ttyS1\" -D_GNU_SOURCE
-DVIDEODIR=\"/video\" -DCONFDIR=\"/video\" -DPLUGINDIR=\"./PLUGINS/lib\"
-DLOCDIR=\"./locale\" -I/usr/include/freetype2 audio.c
dvbdevice.h:38: Fehler: »dvbfe_delsys« bezeichnet keinen Typ
make: *** [audio.o] Fehler 1
Any hints ?
Thank you...
...Hagen
On Sunday 13 January 2008, Hagen Schöbel wrote:
> I have an problem with the original patch to vdr-1.5.12:
>
> root@video:/usr/local/src/vdr-1.5.12-dvbs2# make
> g++ -g -O2 -Wall -Woverloaded-virtual -c -DREMOTE_KBD
> -DLIRC_DEVICE=\"/dev/lircd\" -DRCU_DEVICE=\"/dev/ttyS1\" -D_GNU_SOURCE
> -DVIDEODIR=\"/video\" -DCONFDIR=\"/video\" -DPLUGINDIR=\"./PLUGINS/lib\"
> -DLOCDIR=\"./locale\" -I/usr/include/freetype2 audio.c
> dvbdevice.h:38: Fehler: »dvbfe_delsys« bezeichnet keinen Typ
> make: *** [audio.o] Fehler 1
>
> Any hints ?
The include path to your modified DVB-S2 drivers is missing.
I set this path in Make.config (see Make.config.template) to:
DVBDIR = /usr/local/src/v4l-dvb/linux
..-DLOCDIR=\"./locale\" -I/usr/include/freetype2 -I/usr/local/src/v4l-dvb/linux/include dvbdevice.c ..
@@ -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)) {