need help with TrickSpeed Code

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [Linux Media]     [Asterisk]     [DCCP]     [Netdev]     [Xorg]     [Util Linux NG]     [Xfree86]     [Big List of Linux Books]     [Fedora Users]     [Fedora Women]     [ALSA Devel]     [Linux USB]

  Powered by Linux