[vdr] need help with TrickSpeed Code

Martin Dauskardt md001 at gmx.de
Sun Nov 19 13:23:09 CET 2006


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



More information about the vdr mailing list