Re: [vdr] Streamdev to Streamdev with PVRInput card

2011-06-09 Thread Rob Davis
Ok, will try this out tonight when I get home.

For info.  PVRInput should treat every channel as a seperate transponder
(imho).

I think you hit the nail on the head though, it's not detaching the first
stream before starting the second, which is why changing channel on the
remote frontend from say 5 to 8 leaves the backend locked on channel 5.

Conversely, the vomp plugin always seems to detach, which probably leads
to longer channel change times, but works with pvrinput.

Could the patch below work for everyone if a conditional check for tuner
type P was put in?

> Hi Rob,
>
> for your (and only for your) problem there could be an easier solution:
>
> When doing a channel switch streamdev queries for a new device while
> the current device is still active (means receivers are attached to
> the device). If no device could be found, streamdev detaches itself
> and queries again.
>
> If streamdev only queries for a device after detaching itself, the
> pvrinput device gets closed and reopened again incl. executing the
> channel switch thing. This is a really hack with some disadvantages
> (e.g. like larger channel switch times in case of multiple channels in
> a transponder) but i guess this would help.
>
> I guess doing the following line should be sufficient in
> server/connection.c (streamdev-version 0.5.0-CVS):
>
> bool cServerConnection::ProvidesChannel(const cChannel *Channel, int
> Priority)
> {
>   const cChannel *current =
> Channels.GetByNumber(cDevice::CurrentChannel());
>   const cChannel *current =
> Channels.GetByNumber(cDevice::CurrentChannel());
>
> <<<   cDevice *device = CheckDlevice(Channel, Priority, false);
cDevice *device = 0;
>   if (!device || (device == cDevice::ActualDevice()
>   && !cSuspendCtl::IsActive()
>   && StreamdevServerSetup.SuspendMode != smAlways
>   && current != NULL
>   && !TRANSPONDER(Channel, current))) {
>   // mustn't switch actual device
>   // maybe a device would be free if THIS connection did turn off 
> its
> streams?
>   Detach();
>   device = CheckDevice(Channel, Priority, false);
>   Attach();
>
>
>
>
> 2011/6/9 Rainer Blickle :
>> Hi Rob,
>>
>>> Can we put a check in streamdev to check if it's a pvrinput device and
>>> recall even if the frequency is the same?
>>>
>>
>> if i got it right the pvr devices hasn't to be retuned when switching
>> the channel, but the externchannelswitch-script has to be executed.
>>
>> IMO it isn't a good idea to check for a pvrinput device in the
>> softdevice server. These two plug-ins shouldn't have any dependencies.
>> What you really need is that the external channel script gets executed
>> If some "constraints" are fullfilled. My first idea is to extend the
>> core vdr for a callback function which informs plugins about
>> attaching/detaching receivers to/from a device and retuning of a
>> device.
>>
>> With this informations a plugin could execute such
>> externchannelswitch-scripts.
>>
>> But i think there is a problem that can't be fixed with this approach:
>> When watch live tv on channel 1 and streamdev requests channel 2, vdr
>> cannot handle this. Why? : vdr/streamdev doesn't know that 2 different
>> pvrinput-devices are needed. Correct me if i'm wrong
>>
>
> ___
> vdr mailing list
> vdr@linuxtv.org
> http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
>



___
vdr mailing list
vdr@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr


Re: [vdr] Streamdev to Streamdev with PVRInput card

2011-06-09 Thread Rob Davis

On 09/06/11 01:53, Rainer Blickle wrote:


<<>>cDevice *device = 0;


With this there is some improvement, however, its calling the old 
channel again, so if I change from channel 4 to channel 6 then external 
channel is called, but changes it to channel 4.  I wonder is 
streamdev-client needs something similar to differentiate channels.



--

Rob Davis

___
vdr mailing list
vdr@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr


Re: [vdr] Streamdev to Streamdev with PVRInput card

2011-06-09 Thread Rob Davis

On 06/09/2011 05:23 PM, Rob Davis wrote:

On 09/06/11 01:53, Rainer Blickle wrote:


<<>>cDevice *device = 0;


With this there is some improvement, however, its calling the old 
channel again, so if I change from channel 4 to channel 6 then 
external channel is called, but changes it to channel 4.  I wonder is 
streamdev-client needs something similar to differentiate channels.



Here is  a logfile..  Started remote vdr on channel 4, switched to 
channel 5.


Somehow the channel settings are being lost when the channel is called..

sudo tail -f /var/log/vdr.log
Jun  9 21:12:15 oac vdr: [1696] cPvrReadThread::Action() stopped on 
/dev/video1
Jun  9 21:12:15 oac vdr: [1696] PvrReadThread of /dev/video1 thread 
ended (pid=1310, tid=1696)
Jun  9 21:12:15 oac vdr: [1695] cPvrDevice::SetEncoderState (Stop) for 
/dev/video1 (PVR500#1)
Jun  9 21:12:15 oac vdr: [1675] streamdev-writer thread ended (pid=1310, 
tid=1675)

Jun  9 21:12:15 oac vdr: [1386] buffer stats: 379008 (10%) used
Jun  9 21:12:15 oac vdr: [1386] buffer stats: 0 (0%) used
Jun  9 21:12:15 oac vdr: [1695] SetVBImode(525, 0) on /dev/video1 (PVR500#1)
Jun  9 21:12:15 oac vdr: [1695] receiver on device 10 thread ended 
(pid=1310, tid=1695)
Jun  9 21:12:16 oac vdr: [1386] streamdev: closing streamdev connection 
to 192.168.2.13:34100

Jun  9 21:12:16 oac vdr: [1386] buffer stats: 0 (0%) used
Jun  9 21:12:38 oac vdr: [1376] [discovery] BROADCAST: VDR xineliboutput 
DISCOVERY 1.0
Jun  9 21:12:39 oac vdr: [1386] Streamdev: Accepted new client (VTP) 
192.168.2.13:38657
Jun  9 21:12:39 oac vdr: [1386] ParseChannel TV input -1, 
norm=0xb000, card 999
Jun  9 21:12:39 oac vdr: [1386] cPvrDevice::ProvidesChannel: input -1 
unknown on /dev/video0 (HDPVR)
Jun  9 21:12:39 oac vdr: [1386] ParseChannel TV input 0, 
norm=0xb000, card 999
Jun  9 21:12:39 oac vdr: [1386] cPvrDevice::ProvidesChannel: /dev/video1 
(PVR500#1): Channel 4 (4-WTVO ABC_Affiliate ntsc) 67.25MHz, -> true
Jun  9 21:12:39 oac vdr: [1386] cPvrDevice::ProvidesChannel: 
/dev/video1: Receiving()=false, needsDetachReceivers=true, Priority=0, 
hasPriority=true
Jun  9 21:12:39 oac vdr: [1386] ParseChannel TV input 0, 
norm=0xb000, card 999
Jun  9 21:12:39 oac vdr: [1386] cPvrDevice::ProvidesChannel: /dev/video2 
(PVR500#2): Channel 4 (4-WTVO ABC_Affiliate ntsc) 67.25MHz, -> true
Jun  9 21:12:39 oac vdr: [1386] cPvrDevice::ProvidesChannel: 
/dev/video2: Receiving()=true, needsDetachReceivers=true, Priority=0, 
hasPriority=true
Jun  9 21:12:39 oac vdr: [1386] ParseChannel TV input 0, 
norm=0xb000, card 999
Jun  9 21:12:39 oac vdr: [1386] cPvrDevice::ProvidesChannel: /dev/video3 
(HVR1600): Channel 4 (4-WTVO ABC_Affiliate ntsc) 67.25MHz, -> false
Jun  9 21:12:39 oac vdr: [1386] cPvrDevice::ProvidesChannel: 
/dev/video3: Receiving()=true, needsDetachReceivers=true, Priority=0, 
hasPriority=false

Jun  9 21:12:39 oac vdr: [1386] IPTV: cIptvDevice::ProvidesChannel(0)
Jun  9 21:12:39 oac vdr: [1386] IPTV: cIptvDevice::ProvidesTransponder(0)
Jun  9 21:12:39 oac vdr: [1386] IPTV: cIptvDevice::ProvidesSource(0)
Jun  9 21:12:39 oac vdr: [1386] IPTV: cIptvDevice::ProvidesChannel(1)
Jun  9 21:12:39 oac vdr: [1386] IPTV: cIptvDevice::ProvidesTransponder(1)
Jun  9 21:12:39 oac vdr: [1386] IPTV: cIptvDevice::ProvidesSource(1)
Jun  9 21:12:39 oac vdr: [1310] connect from 192.168.2.13, port 33742 - 
accepted
Jun  9 21:12:39 oac vdr: [1386] ParseChannel TV input -1, 
norm=0xb000, card 999
Jun  9 21:12:39 oac vdr: [1386] cPvrDevice::ProvidesChannel: input -1 
unknown on /dev/video0 (HDPVR)
Jun  9 21:12:39 oac vdr: [1386] ParseChannel TV input 0, 
norm=0xb000, card 999
Jun  9 21:12:39 oac vdr: [1386] cPvrDevice::ProvidesChannel: /dev/video1 
(PVR500#1): Channel 4 (4-WTVO ABC_Affiliate ntsc) 67.25MHz, -> true
Jun  9 21:12:39 oac vdr: [1386] cPvrDevice::ProvidesChannel: 
/dev/video1: Receiving()=false, needsDetachReceivers=true, Priority=0, 
hasPriority=true
Jun  9 21:12:39 oac vdr: [1386] ParseChannel TV input 0, 
norm=0xb000, card 999
Jun  9 21:12:39 oac vdr: [1386] cPvrDevice::ProvidesChannel: /dev/video2 
(PVR500#2): Channel 4 (4-WTVO ABC_Affiliate ntsc) 67.25MHz, -> true
Jun  9 21:12:39 oac vdr: [1386] cPvrDevice::ProvidesChannel: 
/dev/video2: Receiving()=true, needsDetachReceivers=true, Priority=0, 
hasPriority=true
Jun  9 21:12:39 oac vdr: [1386] ParseChannel TV input 0, 
norm=0xb000, card 999
Jun  9 21:12:39 oac vdr: [1386] cPvrDevice::ProvidesChannel: /dev/video3 
(HVR1600): Channel 4 (4-WTVO ABC_Affiliate ntsc) 67.25MHz, -> false
Jun  9 21:12:39 oac vdr: [1386] cPvrDevice::ProvidesChannel: 
/dev/video3: Receiving()=true, needsDetachReceivers=true, Priority=0, 
hasPriority=false

Jun  9 21:12:39 oac vdr: [1386] IPTV: cIptvDevice::ProvidesChannel(0)
Jun  9 21:12:39 oac vdr: [1386] IPTV: cIptvDevice::ProvidesTransponder(0)
Jun  9 21:12:39 oac vdr: [1386] IPTV: cIptvDevice::ProvidesSource(0)
Jun  9 21:12:39 oac vdr: [