The pvr350-Plugin uses the following code:

void cPvr350Device::TrickSpeed(int Speed)
{
        printf("Set speed %d\n",Speed);
        m_RingBuffer->Clear();
        SetPlayMode(m_PlayMode);
}

With this code it makes no matter if the vdr-setup is set to Multispeed mode or 
not -it always provides one (pretty fast) speed in fast Forward mode. As no 
ivtv ioctl is used, I suppose the speed is done by vdr itself and not using the 
ivtv driver.

I "borrowed" some code and changed it to this:

void cPvr350Device::TrickSpeed(int Speed)
{
        printf("Set speed %d\n",Speed);
        struct ivtv_speed speed;
        int ret;
        m_RingBuffer->Clear();
        memset(&speed, 0, sizeof(speed));
        
        speed.fr_mask = 2;

        switch (Speed) {
          case 1 : speed.scale = 0;             break;
          case 3 : speed.scale = 30 / (24 / 3); break;
          case 6 : speed.scale = 30 / (24 / 6); break;
        }

        if ( (ret = ioctl(fd_out,IVTV_IOC_S_SPEED, &speed)) < 0 ) {
                printf("speed %d\n",ret);

        SetPlayMode(m_PlayMode);
        }
}

The first press of the left button during playback results in the same speed as 
with the old code. But if I increase the speed and then return to a lower 
speed, it work as expected. So I have three different speeds, but the initial 
speed seems to be always the highest speed.

Could somebody help me? Maybe it is even possible to get three speeds without 
using the ivtv ioctls?
-- 
Der GMX SmartSurfer hilft bis zu 70% Ihrer Onlinekosten zu sparen! 
Ideal für Modem und ISDN: http://www.gmx.net/de/go/smartsurfer

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

Reply via email to