diff options
author | schmirl <schmirl> | 2007-01-11 11:39:08 +0000 |
---|---|---|
committer | schmirl <schmirl> | 2007-01-11 11:39:08 +0000 |
commit | 1c0f73a09b61d4489039f48886a207825ee18263 (patch) | |
tree | 80452506fbcfadc8e17e8bd19971375f99715b4f /patches | |
parent | 7c300e2a12d11a046b8a0d86c4c0f2e37a2950b1 (diff) | |
download | vdr-plugin-streamdev-1c0f73a09b61d4489039f48886a207825ee18263.tar.gz vdr-plugin-streamdev-1c0f73a09b61d4489039f48886a207825ee18263.tar.bz2 |
Devices are expected to honour the CA field. Without this patch there
is no way to tell a VDR that it may not use streamdev for a specific
channel.
Diffstat (limited to 'patches')
-rw-r--r-- | patches/respect_ca.diff | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/patches/respect_ca.diff b/patches/respect_ca.diff new file mode 100644 index 0000000..8240b19 --- /dev/null +++ b/patches/respect_ca.diff @@ -0,0 +1,43 @@ +# The cannels.conf ca field can be used to bind a channel to a specific +# device. The streamdev-client does not consider this information, so +# there's no way to keep VDR from using streamdev for a specific +# channel. Apply this patch if you need this feature. +# +# This fix should probably become part of streamdev. However as it +# changes the behaviour of streamdev, I decided to keep it as a separate +# patch until there is something like a new official streamdev release. +# +--- client/device.h.bak 2006-11-09 12:25:21.000000000 +0100 ++++ client/device.h 2006-11-09 12:26:57.000000000 +0100 +@@ -50,6 +50,7 @@ + cStreamdevDevice(void); + virtual ~cStreamdevDevice(); + ++ virtual int ProvidesCa(const cChannel *Channel) const; + virtual bool ProvidesSource(int Source) const; + virtual bool ProvidesTransponder(const cChannel *Channel) const; + virtual bool ProvidesChannel(const cChannel *Channel, int Priority = -1, +--- client/device.c.bak 2006-11-09 12:23:24.000000000 +0100 ++++ client/device.c 2006-11-09 12:35:48.000000000 +0100 +@@ -57,6 +57,12 @@ + #endif + } + ++int cStreamdevDevice::ProvidesCa(const cChannel *Channel) const ++{ ++ // Encrypted is acceptable for now. Will ask the server later. ++ return Channel->Ca() <= CA_DVB_MAX ? cDevice::ProvidesCa(Channel) : 1; ++} ++ + bool cStreamdevDevice::ProvidesSource(int Source) const { + Dprintf("ProvidesSource, Source=%d\n", Source); + return false; +@@ -78,7 +84,7 @@ + if (ClientSocket.DataSocket(siLive) != NULL + && TRANSPONDER(Channel, m_Channel)) + res = true; +- else { ++ else if (ProvidesCa(Channel)) { + res = prio && ClientSocket.ProvidesChannel(Channel, Priority); + ndr = true; + } |