diff options
author | Lars Hanisch <dvb@flensrocker.de> | 2010-03-20 11:42:03 +0100 |
---|---|---|
committer | Lars Hanisch <dvb@flensrocker.de> | 2010-03-20 11:42:03 +0100 |
commit | 6bb8f39bb544d93150dd353a1baaa62754500442 (patch) | |
tree | e10a0a9ecf2b60852eaee71e843b003ca362f25e | |
parent | 5a2a807bad756353f681b3e0c2db7c1f7ff9d85e (diff) | |
download | vdr-plugin-pvrinput-6bb8f39bb544d93150dd353a1baaa62754500442.tar.gz vdr-plugin-pvrinput-6bb8f39bb544d93150dd353a1baaa62754500442.tar.bz2 |
Revert "Refactoring usage of frequency and encoderinput fields"
This reverts commit 5a2a807bad756353f681b3e0c2db7c1f7ff9d85e.
-rw-r--r-- | device.c | 54 | ||||
-rw-r--r-- | device.h | 5 |
2 files changed, 32 insertions, 27 deletions
@@ -205,7 +205,7 @@ static void cPvrSourceParam_Initialize() cPvrDevice::cPvrDevice(int DeviceNumber) : number(DeviceNumber), - CurrentFrequency(-1), + frequency(-1), CurrentNorm(0), //uint64_t can't be negative CurrentLinesPerFrame(-1), CurrentInput(-1), @@ -578,31 +578,34 @@ void cPvrDevice::ReInit(void) } } -bool cPvrDevice::Tune(int freq) +bool cPvrDevice::Tune(eVideoInputs encoderInput, int freq) { double fac = 16; int freqaux = freq; struct v4l2_frequency vf; - if (CurrentFrequency == freq) + if ((frequency == freq) && (EncoderInput == encoderInput)) return true; - memset(&vf, 0, sizeof(vf)); - struct v4l2_tuner tuner; - memset(&tuner, 0, sizeof(tuner)); - if (IOCTL(v4l2_fd, VIDIOC_G_TUNER, &tuner) == 0) - fac = (tuner.capability & V4L2_TUNER_CAP_LOW) ? 16000 : 16; - vf.tuner = 0; - vf.type = tuner.type; - vf.frequency = (int)((double)freqaux * fac / 1000.0); - if (IOCTL(v4l2_fd, VIDIOC_S_FREQUENCY, &vf) == 0) { - log(pvrDEBUG1, "cPvrDevice::Tune(): set Frequency on /dev/video%d (%s) to %.2f MHz (%d)", - number, CARDNAME[cardname], vf.frequency / fac, vf.frequency); - } - else { - log(pvrERROR, "cPvrDevice::Tune(): error on /dev/video%d (%s) tuning to %.2f MHz (%d): %d:%s", - number, CARDNAME[cardname], vf.frequency / fac, vf.frequency, errno, strerror(errno)); - return false; + if ((encoderInput == eRadio) || (encoderInput == eTelevision)) { + memset(&vf, 0, sizeof(vf)); + struct v4l2_tuner tuner; + memset(&tuner, 0, sizeof(tuner)); + if (IOCTL(v4l2_fd, VIDIOC_G_TUNER,&tuner) == 0) + fac = (tuner.capability & V4L2_TUNER_CAP_LOW) ? 16000 : 16; + vf.tuner = 0; + vf.type = tuner.type; + vf.frequency = (int)((double)freqaux * fac / 1000.0); + if (IOCTL(v4l2_fd, VIDIOC_S_FREQUENCY, &vf) == 0) { + log(pvrDEBUG1, "cPvrDevice::Tune(): set Frequency on /dev/video%d (%s) to %.2f MHz (%d)", + number, CARDNAME[cardname], vf.frequency / fac, vf.frequency); + } + else { + log(pvrERROR, "cPvrDevice::Tune(): error on /dev/video%d (%s) tuning to %.2f MHz (%d): %d:%s", + number, CARDNAME[cardname], vf.frequency / fac, vf.frequency, errno, strerror(errno)); + return false; + } } - CurrentFrequency = freq; + frequency = freq; + EncoderInput = encoderInput; return true; } @@ -978,7 +981,7 @@ bool cPvrDevice::SetChannelDevice(const cChannel * Channel, bool LiveView) if (!ParseChannel(Channel, &input, &norm, &LinesPerFrame, &card, &encoderInput, &apid, &vpid, &tpid)) return false; - if ((Channel->Number() == currentChannel.Number()) && (Channel->Frequency() == CurrentFrequency) && (input == CurrentInput) && (norm == CurrentNorm)) + if ((Channel->Number() == currentChannel.Number()) && (Channel->Frequency() == frequency) && (input == CurrentInput) && (norm == CurrentNorm)) return true; log(pvrDEBUG1, "cPvrDevice::SetChannelDevice prepare switch to %d (%s) %3.2fMHz (/dev/video%d = %s)", Channel->Number(), Channel->Name(), (double)Channel->Frequency() / 1000, number, CARDNAME[cardname]); @@ -1075,7 +1078,8 @@ bool cPvrDevice::OpenDvr(void) return false; if (!SetVideoNorm(newNorm)) return false; - CurrentFrequency = newFrequency; // since we don't tune: set it here + frequency = newFrequency; // since we don't tune: set it here + EncoderInput = newEncoderInput; break; } case eRadio: @@ -1109,7 +1113,7 @@ bool cPvrDevice::OpenDvr(void) log(pvrERROR, "driver is unknown!!"); return false; } - if (!Tune(newFrequency)) + if (!Tune(newEncoderInput, newFrequency)) return false; break; } @@ -1129,7 +1133,7 @@ bool cPvrDevice::OpenDvr(void) return false; if (!SetVBImode(newLinesPerFrame, PvrSetup.SliceVBI)) return false; - if (!Tune(newFrequency)) + if (!Tune(newEncoderInput, newFrequency)) return false; } } //end: switch (newEncoderInput) @@ -1306,7 +1310,7 @@ bool cPvrDevice::ProvidesChannel(const cChannel *Channel, int Priority, bool *Ne return false; } if ((Priority >= 0) && Receiving(true)) { - if ((Channel->Number() == currentChannel.Number()) && (CurrentFrequency == Channel->Frequency()) && (CurrentInput == input) && (CurrentNorm == norm)) { + if ((Channel->Number() == currentChannel.Number()) && (frequency == Channel->Frequency()) && (CurrentInput == input) && (CurrentNorm == norm)) { needsDetachReceivers = false; result = true; log(pvrDEBUG1, "cPvrDevice::ProvidesChannel: %s already set -> true.", Channel->Name()); @@ -73,7 +73,7 @@ private: int radio_dev; int inputs[12]; int numInputs; - int CurrentFrequency; + int frequency; int vpid; int apid; int tpid; @@ -87,6 +87,7 @@ private: eVideoInputs newEncoderInput; cString BusID; eEncState EncoderState; + eVideoInputs EncoderInput; int driver_apiversion; bool SupportsSlicedVBI; bool hasDecoder; @@ -132,7 +133,7 @@ public: void StopReadThread(void); void GetStandard(void); void TurnOffSlicedVBI(void); - bool Tune(int frequency); + bool Tune(eVideoInputs encoderInput, int frequency); bool SetInput(int input); bool SetAudioInput(int input); bool SetVideoNorm(uint64_t norm); |