diff options
Diffstat (limited to 'plugins/streamdev/streamdev-cvs/patches')
9 files changed, 386 insertions, 0 deletions
diff --git a/plugins/streamdev/streamdev-cvs/patches/CVS/Entries b/plugins/streamdev/streamdev-cvs/patches/CVS/Entries new file mode 100644 index 0000000..820adef --- /dev/null +++ b/plugins/streamdev/streamdev-cvs/patches/CVS/Entries @@ -0,0 +1,7 @@ +/vdr-1.4.3-recursion.diff/1.1/Thu Jan 11 11:48:23 2007// +/vdr-1.4.3-recursion_bigpatch.diff/1.1/Thu Jan 11 11:48:23 2007// +/vdr-1.4.x-localchannelprovide.diff/1.1/Thu Jan 11 11:44:01 2007// +/vdr-1.6.0-ignore_missing_cam.diff/1.1/Tue Apr 8 14:18:17 2008// +/vdr-1.6.0-intcamdevices.patch/1.1/Thu Oct 2 07:14:48 2008// +/vdr-cap_net_raw.diff/1.1/Fri Feb 13 10:39:21 2009// +D diff --git a/plugins/streamdev/streamdev-cvs/patches/CVS/Repository b/plugins/streamdev/streamdev-cvs/patches/CVS/Repository new file mode 100644 index 0000000..b4967d6 --- /dev/null +++ b/plugins/streamdev/streamdev-cvs/patches/CVS/Repository @@ -0,0 +1 @@ +streamdev/patches diff --git a/plugins/streamdev/streamdev-cvs/patches/CVS/Root b/plugins/streamdev/streamdev-cvs/patches/CVS/Root new file mode 100644 index 0000000..2c7f6ce --- /dev/null +++ b/plugins/streamdev/streamdev-cvs/patches/CVS/Root @@ -0,0 +1 @@ +:pserver:anoncvs@vdr-developer.org:/var/cvsroot diff --git a/plugins/streamdev/streamdev-cvs/patches/vdr-1.4.3-recursion.diff b/plugins/streamdev/streamdev-cvs/patches/vdr-1.4.3-recursion.diff new file mode 100644 index 0000000..7a06c92 --- /dev/null +++ b/plugins/streamdev/streamdev-cvs/patches/vdr-1.4.3-recursion.diff @@ -0,0 +1,85 @@ +# If you have two or more VDRs and you like them to mutually share +# there DVB cards you might need to apply this patch first. +# +# IMPORTANT: As this patch does not only modify streamdev-server but +# also an exported method of VDR, you will need to +# +# !!!!! RECOMPILE VDR AND ALL PLUGINS !!!!! +# +# Why do I need the patch? +# -------------------------- +# Before switching channels VDR will consider all of its devices to +# find the one with the least impact. This includes the device provided +# by the streamdev-client plugin. Streamdev-client will forward the +# request to its server which in turn checks all of its devices. Now if +# the server is running streamdev-client, too, the request will again +# be forwarded to its server and finally you will endup in a loop. +# +# What does the patch do? +# ----------------------- +# The patch adds the additional parameter "bool DVBCardsOnly" to VDR's +# device selection method cDevice::GetDevice(...). The parameter +# defaults to false which gives you the standard behaviour of GetDevice. +# When set to true, GetDevice will use only those devices with a card +# index < MAXDVBDEVICES, so only real DVB cards will be considered. +# Other devices like streamdev-client or DVB cards provided by plugin +# (Hauppauge PVR) won't be used. +# +# Author: Frank Schmirler (http://vdr.schmirler.de) +# +--- device.h.orig 2006-11-15 12:01:34.000000000 +0100 ++++ device.h 2006-11-15 12:02:15.000000000 +0100 +@@ -128,7 +128,7 @@ + ///< Gets the device with the given Index. + ///< \param Index must be in the range 0..numDevices-1. + ///< \return A pointer to the device, or NULL if the Index was invalid. +- static cDevice *GetDevice(const cChannel *Channel, int Priority = -1, bool *NeedsDetachReceivers = NULL); ++ static cDevice *GetDevice(const cChannel *Channel, int Priority = -1, bool *NeedsDetachReceivers = NULL, bool DVBCardsOnly = false); + ///< Returns a device that is able to receive the given Channel at the + ///< given Priority, with the least impact on active recordings and + ///< live viewing. +--- device.c.orig 2006-11-15 12:01:30.000000000 +0100 ++++ device.c 2006-11-22 12:28:05.000000000 +0100 +@@ -8,6 +8,7 @@ + */ + + #include "device.h" ++#include "dvbdevice.h" + #include <errno.h> + #include <sys/ioctl.h> + #include <sys/mman.h> +@@ -278,11 +279,13 @@ + return (0 <= Index && Index < numDevices) ? device[Index] : NULL; + } + +-cDevice *cDevice::GetDevice(const cChannel *Channel, int Priority, bool *NeedsDetachReceivers) ++cDevice *cDevice::GetDevice(const cChannel *Channel, int Priority, bool *NeedsDetachReceivers, bool DVBCardsOnly) + { + cDevice *d = NULL; + uint Impact = 0xFFFFFFFF; // we're looking for a device with the least impact + for (int i = 0; i < numDevices; i++) { ++ if (DVBCardsOnly && device[i]->CardIndex() >= MAXDVBDEVICES) ++ continue; + bool ndr; + if (device[i]->ProvidesChannel(Channel, Priority, &ndr)) { // this device is basicly able to do the job + // Put together an integer number that reflects the "impact" using +--- PLUGINS/src/streamdev/server/connection.c.orig 2006-11-15 12:10:11.000000000 +0100 ++++ PLUGINS/src/streamdev/server/connection.c 2006-11-15 12:10:59.000000000 +0100 +@@ -132,7 +132,7 @@ + Dprintf(" * GetDevice(const cChannel*, int)\n"); + Dprintf(" * -------------------------------\n"); + +- device = cDevice::GetDevice(Channel, Priority); ++ device = cDevice::GetDevice(Channel, Priority, NULL, true); + + Dprintf(" * Found following device: %p (%d)\n", device, + device ? device->CardIndex() + 1 : 0); +@@ -150,7 +150,7 @@ + const cChannel *current = Channels.GetByNumber(cDevice::CurrentChannel()); + isyslog("streamdev-server: Detaching current receiver"); + Detach(); +- device = cDevice::GetDevice(Channel, Priority); ++ device = cDevice::GetDevice(Channel, Priority, NULL, true); + Attach(); + Dprintf(" * Found following device: %p (%d)\n", device, + device ? device->CardIndex() + 1 : 0); diff --git a/plugins/streamdev/streamdev-cvs/patches/vdr-1.4.3-recursion_bigpatch.diff b/plugins/streamdev/streamdev-cvs/patches/vdr-1.4.3-recursion_bigpatch.diff new file mode 100644 index 0000000..5bb7854 --- /dev/null +++ b/plugins/streamdev/streamdev-cvs/patches/vdr-1.4.3-recursion_bigpatch.diff @@ -0,0 +1,88 @@ +# If you have two or more VDRs and you like them to mutually share +# there DVB cards you might need to apply this patch first. +# +# This is a modified version of the patch for VDRs with BIGPATCH. +# Thanks to p_body@vdrportal. +# +# IMPORTANT: As this patch does not only modify streamdev-server but +# also an exported method of VDR, you will need to +# +# !!!!! RECOMPILE VDR AND ALL PLUGINS !!!!! +# +# Why do I need the patch? +# -------------------------- +# Before switching channels VDR will consider all of its devices to +# find the one with the least impact. This includes the device provided +# by the streamdev-client plugin. Streamdev-client will forward the +# request to its server which in turn checks all of its devices. Now if +# the server is running streamdev-client, too, the request will again +# be forwarded to its server and finally you will endup in a loop. +# +# What does the patch do? +# ----------------------- +# The patch adds the additional parameter "bool DVBCardsOnly" to VDR's +# device selection method cDevice::GetDevice(...). The parameter +# defaults to false which gives you the standard behaviour of GetDevice. +# When set to true, GetDevice will use only those devices with a card +# index < MAXDVBDEVICES, so only real DVB cards will be considered. +# Other devices like streamdev-client or DVB cards provided by plugin +# (Hauppauge PVR) won't be used. +# +# Author: Frank Schmirler (http://vdr.schmirler.de) +# +--- device.h.orig 2006-11-15 12:01:34.000000000 +0100 ++++ device.h 2006-11-15 12:02:15.000000000 +0100 +@@ -128,7 +128,7 @@ + ///< Gets the device with the given Index. + ///< \param Index must be in the range 0..numDevices-1. + ///< \return A pointer to the device, or NULL if the Index was invalid. +- static cDevice *GetDevice(const cChannel *Channel, int Priority = -1, bool *NeedsDetachReceivers = NULL, bool LiveView = false); ++ static cDevice *GetDevice(const cChannel *Channel, int Priority = -1, bool *NeedsDetachReceivers = NULL, bool LiveView = false, bool DVBCardsOnly = false); + ///< Returns a device that is able to receive the given Channel at the + ///< given Priority, with the least impact on active recordings and + ///< live viewing. +--- device.c.orig 2006-11-15 12:01:30.000000000 +0100 ++++ device.c 2006-11-22 12:28:05.000000000 +0100 +@@ -8,6 +8,7 @@ + */ + + #include "device.h" ++#include "dvbdevice.h" + #include <errno.h> + #include <sys/ioctl.h> + #include <sys/mman.h> +@@ -278,11 +279,13 @@ + return (0 <= Index && Index < numDevices) ? device[Index] : NULL; + } + +-cDevice *cDevice::GetDevice(const cChannel *Channel, int Priority, bool *NeedsDetachReceivers, bool LiveView) ++cDevice *cDevice::GetDevice(const cChannel *Channel, int Priority, bool *NeedsDetachReceivers, bool LiveView, bool DVBCardsOnly) + { + cDevice *d = NULL; + uint Impact = 0xFFFFFFFF; // we're looking for a device with the least impact + for (int i = 0; i < numDevices; i++) { ++ if (DVBCardsOnly && device[i]->CardIndex() >= MAXDVBDEVICES) ++ continue; + bool ndr; + if (device[i]->ProvidesChannel(Channel, Priority, &ndr)) { // this device is basicly able to do the job + // Put together an integer number that reflects the "impact" using +--- PLUGINS/src/streamdev/server/connection.c.orig 2006-11-15 12:10:11.000000000 +0100 ++++ PLUGINS/src/streamdev/server/connection.c 2006-11-15 12:10:59.000000000 +0100 +@@ -132,7 +132,7 @@ + Dprintf(" * GetDevice(const cChannel*, int)\n"); + Dprintf(" * -------------------------------\n"); + +- device = cDevice::GetDevice(Channel, Priority); ++ device = cDevice::GetDevice(Channel, Priority, NULL, NULL, true); + + Dprintf(" * Found following device: %p (%d)\n", device, + device ? device->CardIndex() + 1 : 0); +@@ -150,7 +150,7 @@ + const cChannel *current = Channels.GetByNumber(cDevice::CurrentChannel()); + isyslog("streamdev-server: Detaching current receiver"); + Detach(); +- device = cDevice::GetDevice(Channel, Priority); ++ device = cDevice::GetDevice(Channel, Priority, NULL, NULL, true); + Attach(); + Dprintf(" * Found following device: %p (%d)\n", device, + device ? device->CardIndex() + 1 : 0); diff --git a/plugins/streamdev/streamdev-cvs/patches/vdr-1.4.x-localchannelprovide.diff b/plugins/streamdev/streamdev-cvs/patches/vdr-1.4.x-localchannelprovide.diff new file mode 100644 index 0000000..857c1a2 --- /dev/null +++ b/plugins/streamdev/streamdev-cvs/patches/vdr-1.4.x-localchannelprovide.diff @@ -0,0 +1,102 @@ +# Apply this patch to VDR if you want to use a fullfeatured DVB card +# as pure output device. Infact the patch will keep VDR from using the +# tuner of any local DVB card (also budget cards). It will not affect +# other input devices like e.g. streamdev-client or DVB cards provided +# by plugins (e.g. Hauppauge PVR). +# +# By default the patch is DISABLED. There will be a new OSD menu entry +# in Setup->DVB which allows you to enable or disable the patch at any +# time. +diff -ru vdr-1.4.3.orig/config.c vdr-1.4.3/config.c +--- vdr-1.4.3.orig/config.c 2006-07-22 13:57:51.000000000 +0200 ++++ vdr-1.4.3/config.c 2006-11-16 08:16:37.000000000 +0100 +@@ -273,6 +273,7 @@ + CurrentChannel = -1; + CurrentVolume = MAXVOLUME; + CurrentDolby = 0; ++ LocalChannelProvide = 1; + InitialChannel = 0; + InitialVolume = -1; + } +@@ -434,6 +435,7 @@ + else if (!strcasecmp(Name, "CurrentChannel")) CurrentChannel = atoi(Value); + else if (!strcasecmp(Name, "CurrentVolume")) CurrentVolume = atoi(Value); + else if (!strcasecmp(Name, "CurrentDolby")) CurrentDolby = atoi(Value); ++ else if (!strcasecmp(Name, "LocalChannelProvide")) LocalChannelProvide = atoi(Value); + else if (!strcasecmp(Name, "InitialChannel")) InitialChannel = atoi(Value); + else if (!strcasecmp(Name, "InitialVolume")) InitialVolume = atoi(Value); + else +@@ -502,6 +504,7 @@ + Store("CurrentChannel", CurrentChannel); + Store("CurrentVolume", CurrentVolume); + Store("CurrentDolby", CurrentDolby); ++ Store("LocalChannelProvide",LocalChannelProvide); + Store("InitialChannel", InitialChannel); + Store("InitialVolume", InitialVolume); + +diff -ru vdr-1.4.3.orig/config.h vdr-1.4.3/config.h +--- vdr-1.4.3.orig/config.h 2006-09-23 15:56:08.000000000 +0200 ++++ vdr-1.4.3/config.h 2006-11-16 08:16:57.000000000 +0100 +@@ -250,6 +250,7 @@ + int CurrentChannel; + int CurrentVolume; + int CurrentDolby; ++ int LocalChannelProvide; + int InitialChannel; + int InitialVolume; + int __EndData__; +diff -ru vdr-1.4.3.orig/dvbdevice.c vdr-1.4.3/dvbdevice.c +--- vdr-1.4.3.orig/dvbdevice.c 2006-08-14 11:38:32.000000000 +0200 ++++ vdr-1.4.3/dvbdevice.c 2006-11-16 08:17:58.000000000 +0100 +@@ -766,6 +766,8 @@ + + bool cDvbDevice::ProvidesChannel(const cChannel *Channel, int Priority, bool *NeedsDetachReceivers) const + { ++ if (Setup.LocalChannelProvide != 1) ++ return false; + bool result = false; + bool hasPriority = Priority < 0 || Priority > this->Priority(); + bool needsDetachReceivers = false; +diff -ru vdr-1.4.3.orig/i18n.c vdr-1.4.3/i18n.c +--- vdr-1.4.3.orig/i18n.c 2006-09-16 11:08:30.000000000 +0200 ++++ vdr-1.4.3/i18n.c 2006-11-16 08:36:53.000000000 +0100 +@@ -3546,6 +3546,28 @@ + "Foretrukket sprog", + "Preferovaný jazyk", + }, ++ { "Setup.DVB$Use DVB receivers", ++ "DVB Empfangsteile benutzen", ++ "", ++ "", ++ "", ++ "", ++ "", ++ "", ++ "", ++ "", ++ "", ++ "", ++ "", ++ "", ++ "", ++ "", ++ "", ++ "", ++ "", ++ "", ++ "", ++ }, + { "Setup.DVB$Primary DVB interface", + "Primäres DVB-Interface", + "Primarna naprava", +diff -ru vdr-1.4.3.orig/menu.c vdr-1.4.3/menu.c +--- vdr-1.4.3.orig/menu.c 2006-07-23 11:23:11.000000000 +0200 ++++ vdr-1.4.3/menu.c 2006-11-16 08:37:27.000000000 +0100 +@@ -2354,6 +2354,7 @@ + + Clear(); + ++ Add(new cMenuEditBoolItem(tr("Setup.DVB$Use DVB receivers"), &data.LocalChannelProvide)); + Add(new cMenuEditIntItem( tr("Setup.DVB$Primary DVB interface"), &data.PrimaryDVB, 1, cDevice::NumDevices())); + Add(new cMenuEditBoolItem(tr("Setup.DVB$Video format"), &data.VideoFormat, "4:3", "16:9")); + if (data.VideoFormat == 0) diff --git a/plugins/streamdev/streamdev-cvs/patches/vdr-1.6.0-ignore_missing_cam.diff b/plugins/streamdev/streamdev-cvs/patches/vdr-1.6.0-ignore_missing_cam.diff new file mode 100644 index 0000000..60d93bd --- /dev/null +++ b/plugins/streamdev/streamdev-cvs/patches/vdr-1.6.0-ignore_missing_cam.diff @@ -0,0 +1,13 @@ +--- device.c.orig 2008-03-28 11:47:25.000000000 +0100 ++++ device.c 2008-03-28 11:47:09.000000000 +0100 +@@ -375,8 +375,8 @@ + } + } + } +- if (!NumUsableSlots) +- return NULL; // no CAM is able to decrypt this channel ++// if (!NumUsableSlots) ++// return NULL; // no CAM is able to decrypt this channel + } + + bool NeedsDetachReceivers = false; diff --git a/plugins/streamdev/streamdev-cvs/patches/vdr-1.6.0-intcamdevices.patch b/plugins/streamdev/streamdev-cvs/patches/vdr-1.6.0-intcamdevices.patch new file mode 100644 index 0000000..aab1fb4 --- /dev/null +++ b/plugins/streamdev/streamdev-cvs/patches/vdr-1.6.0-intcamdevices.patch @@ -0,0 +1,78 @@ +Index: vdr-1.6.0-nocamdevices/device.c +=================================================================== +--- vdr-1.6.0-nocamdevices/device.c ++++ vdr-1.6.0-nocamdevices/device.c 2008-04-27 18:55:37.000000000 +0300 +@@ -363,6 +363,7 @@ + int NumCamSlots = CamSlots.Count(); + int SlotPriority[NumCamSlots]; + int NumUsableSlots = 0; ++ bool InternalCamNeeded = false; + if (Channel->Ca() >= CA_ENCRYPTED_MIN) { + for (cCamSlot *CamSlot = CamSlots.First(); CamSlot; CamSlot = CamSlots.Next(CamSlot)) { + SlotPriority[CamSlot->Index()] = MAXPRIORITY + 1; // assumes it can't be used +@@ -376,7 +377,7 @@ + } + } + if (!NumUsableSlots) +- return NULL; // no CAM is able to decrypt this channel ++ InternalCamNeeded = true; // no CAM is able to decrypt this channel + } + + bool NeedsDetachReceivers = false; +@@ -392,11 +393,13 @@ + continue; // this device shall be temporarily avoided + if (Channel->Ca() && Channel->Ca() <= CA_DVB_MAX && Channel->Ca() != device[i]->CardIndex() + 1) + continue; // a specific card was requested, but not this one +- if (NumUsableSlots && !CamSlots.Get(j)->Assign(device[i], true)) ++ if (InternalCamNeeded && !device[i]->HasInternalCam()) ++ continue; // no CAM is able to decrypt this channel and the device uses vdr handled CAMs ++ if (NumUsableSlots && !device[i]->HasInternalCam() && !CamSlots.Get(j)->Assign(device[i], true)) + continue; // CAM slot can't be used with this device + bool ndr; + if (device[i]->ProvidesChannel(Channel, Priority, &ndr)) { // this device is basicly able to do the job +- if (NumUsableSlots && device[i]->CamSlot() && device[i]->CamSlot() != CamSlots.Get(j)) ++ if (NumUsableSlots && !device[i]->HasInternalCam() && device[i]->CamSlot() && device[i]->CamSlot() != CamSlots.Get(j)) + ndr = true; // using a different CAM slot requires detaching receivers + // Put together an integer number that reflects the "impact" using + // this device would have on the overall system. Each condition is represented +@@ -410,18 +413,18 @@ + imp <<= 1; imp |= device[i]->Receiving(); // avoid devices that are receiving + imp <<= 1; imp |= device[i] == cTransferControl::ReceiverDevice(); // avoid the Transfer Mode receiver device + imp <<= 8; imp |= min(max(device[i]->Priority() + MAXPRIORITY, 0), 0xFF); // use the device with the lowest priority (+MAXPRIORITY to assure that values -99..99 can be used) +- imp <<= 8; imp |= min(max((NumUsableSlots ? SlotPriority[j] : 0) + MAXPRIORITY, 0), 0xFF); // use the CAM slot with the lowest priority (+MAXPRIORITY to assure that values -99..99 can be used) ++ imp <<= 8; imp |= min(max(((NumUsableSlots && !device[i]->HasInternalCam()) ? SlotPriority[j] : 0) + MAXPRIORITY, 0), 0xFF); // use the CAM slot with the lowest priority (+MAXPRIORITY to assure that values -99..99 can be used) + imp <<= 1; imp |= ndr; // avoid devices if we need to detach existing receivers + imp <<= 1; imp |= device[i]->IsPrimaryDevice(); // avoid the primary device +- imp <<= 1; imp |= NumUsableSlots ? 0 : device[i]->HasCi(); // avoid cards with Common Interface for FTA channels ++ imp <<= 1; imp |= (NumUsableSlots || InternalCamNeeded) ? 0 : device[i]->HasCi(); // avoid cards with Common Interface for FTA channels + imp <<= 1; imp |= device[i]->HasDecoder(); // avoid full featured cards +- imp <<= 1; imp |= NumUsableSlots ? !ChannelCamRelations.CamDecrypt(Channel->GetChannelID(), j + 1) : 0; // prefer CAMs that are known to decrypt this channel ++ imp <<= 1; imp |= (NumUsableSlots && !device[i]->HasInternalCam()) ? !ChannelCamRelations.CamDecrypt(Channel->GetChannelID(), j + 1) : 0; // prefer CAMs that are known to decrypt this channel + if (imp < Impact) { + // This device has less impact than any previous one, so we take it. + Impact = imp; + d = device[i]; + NeedsDetachReceivers = ndr; +- if (NumUsableSlots) ++ if (NumUsableSlots && !device[i]->HasInternalCam()) + s = CamSlots.Get(j); + } + } +Index: vdr-1.6.0-nocamdevices/device.h +=================================================================== +--- vdr-1.6.0-nocamdevices/device.h ++++ vdr-1.6.0-nocamdevices/device.h 2008-04-27 18:55:49.000000000 +0300 +@@ -335,6 +335,12 @@ + public: + virtual bool HasCi(void); + ///< Returns true if this device has a Common Interface. ++ virtual bool HasInternalCam(void) { return false; } ++ ///< Returns true if this device handles encrypted channels itself ++ ///< without VDR assistance. This can be e.g. when the device is a ++ ///< client that gets the stream from another VDR instance that has ++ ///< already decrypted the stream. In this case ProvidesChannel() ++ ///< shall check whether the channel can be decrypted. + void SetCamSlot(cCamSlot *CamSlot); + ///< Sets the given CamSlot to be used with this device. + cCamSlot *CamSlot(void) const { return camSlot; } + diff --git a/plugins/streamdev/streamdev-cvs/patches/vdr-cap_net_raw.diff b/plugins/streamdev/streamdev-cvs/patches/vdr-cap_net_raw.diff new file mode 100644 index 0000000..2f714b1 --- /dev/null +++ b/plugins/streamdev/streamdev-cvs/patches/vdr-cap_net_raw.diff @@ -0,0 +1,11 @@ +--- vdr.c.orig 2009-02-13 09:45:55.000000000 +0100 ++++ vdr.c 2009-02-13 09:46:24.000000000 +0100 +@@ -115,7 +115,7 @@ + static bool SetCapSysTime(void) + { + // drop all capabilities except cap_sys_time +- cap_t caps = cap_from_text("= cap_sys_time=ep"); ++ cap_t caps = cap_from_text("= cap_sys_time,cap_net_raw=ep"); + if (!caps) { + fprintf(stderr, "vdr: cap_from_text failed: %s\n", strerror(errno)); + return false; |
