On 06/10/2011 02:26 AM, Frank Schmirler wrote:
On Wed, 8 Jun 2011 20:43:38 +0200, Martin Dauskardt wrote
When leaving OpenDvr, the bool is set to true.
It will only become false again during runtime, if vdr calls the
pvrinput- function SetChannelDevice() and determines the needed settings.

And this is your problem. There are no debug messages from
pvrinput's SetChannelDevice() or ProvidesChannel(), so vdr never
calls  these pvrinput functions - although a channel switch for a
pvrinput device is requested.

But why? I have no idea. It works for you with vomp. It worked for
me with streamdev when I tested this last year. But I had only
streamdev-server running and used vlc to switch channels.
Streamdev-client won't forward calls to SetChannelDevice and ProvidesChannel
to the server, if the current channel and the requested new channel are on the
same transponder. Instead it will just go ahead and later add the PIDs of the
new channel to the current connection.

Pvrinput obviously uses the same frequencies (i.e. transponder) and even the
same PIDs for different channels, so streamdev-clients current behaviour is
bound to fail. According to an other posting in this thread, it is not
possible to use different frequencies, so it seems the problem needs to be
fixed in streamdev-client. Please try the following patch:

--- a/common.h
+++ b/common.h
@@ -23,7 +23,7 @@
  #      define Dprintf(x...)

-#define TRANSPONDER(c1, c2) (c1->Transponder() == c2->Transponder())
+#define TRANSPONDER(c1, c2) (c1->Transponder() == c2->Transponder()&&


AFAIKT the problem is streamdev-client only. So HTTP streaming with e.g. VLC
is not affected.

I need to put something else somewhere else:

g++ -g -O2 -Wall -Woverloaded-virtual -Wno-parentheses -fPIC -c -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -DCONFDIR=\"/etc/vdr\" -DUSE_ALTERNATECHANNEL -DUSE_CHANNELBIND -DUSE_MCLI -DUSE_PINPLUGIN -DUSE_PLUGINMISSING -DUSE_YAEPG -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"streamdev-client"' -I/usr/include -I/usr/include/vdr/include -I.. -I/usr/include/vdr -o device.o device.c device.c: In member function ‘virtual bool cStreamdevDevice::IsTunedToTransponder(const cChannel*)’:
device.c:78:14: error: expected ‘;’ before ‘->’ token
device.c:80:13: warning: statement has no effect
device.c:78:7: error: label ‘Channel’ used but not defined
device.c: In member function ‘virtual bool cStreamdevDevice::ProvidesChannel(const cChannel*, int, bool*) const’:
device.c:109:38: error: expected primary-expression before ‘)’ token
device.c:109:38: error: expected ‘;’ before ‘)’ token
device.c: In member function ‘virtual bool cStreamdevDevice::SetChannelDevice(const cChannel*, bool)’:
device.c:135:14: error: expected ‘;’ before ‘->’ token
device.c:137:14: warning: statement has no effect
device.c:135:7: error: label ‘Channel’ used but not defined
make[1]: *** [device.o] Error 1
make[1]: Leaving directory `/usr/src/vdr-src/vdr-plugin-streamdev/client'
make: *** [client] Error 2

vdr mailing list

Reply via email to