diff options
author | Lars Hanisch <dvb@flensrocker.de> | 2010-03-20 11:29:16 +0100 |
---|---|---|
committer | Lars Hanisch <dvb@flensrocker.de> | 2010-03-20 11:29:16 +0100 |
commit | 5a2a807bad756353f681b3e0c2db7c1f7ff9d85e (patch) | |
tree | 07246370cb6e949056e7da30df08335e738c7744 | |
parent | a6a1e233614b8215c10565c33357263d0ba3d831 (diff) | |
download | vdr-plugin-pvrinput-5a2a807bad756353f681b3e0c2db7c1f7ff9d85e.tar.gz vdr-plugin-pvrinput-5a2a807bad756353f681b3e0c2db7c1f7ff9d85e.tar.bz2 |
Refactoring usage of frequency and encoderinput fields
Naming convention:
Properties of current set channel should start with "Current".
Properties of the channel to be set should start with "new".
-rw-r--r-- | device.c | 54 | ||||
-rw-r--r-- | device.h | 5 |
2 files changed, 27 insertions, 32 deletions
@@ -205,7 +205,7 @@ static void cPvrSourceParam_Initialize() cPvrDevice::cPvrDevice(int DeviceNumber) : number(DeviceNumber), - frequency(-1), + CurrentFrequency(-1), CurrentNorm(0), //uint64_t can't be negative CurrentLinesPerFrame(-1), CurrentInput(-1), @@ -578,34 +578,31 @@ void cPvrDevice::ReInit(void) } } -bool cPvrDevice::Tune(eVideoInputs encoderInput, int freq) +bool cPvrDevice::Tune(int freq) { double fac = 16; int freqaux = freq; struct v4l2_frequency vf; - if ((frequency == freq) && (EncoderInput == encoderInput)) + if (CurrentFrequency == freq) return true; - 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; - } + 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; } - frequency = freq; - EncoderInput = encoderInput; + CurrentFrequency = freq; return true; } @@ -981,7 +978,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() == frequency) && (input == CurrentInput) && (norm == CurrentNorm)) + if ((Channel->Number() == currentChannel.Number()) && (Channel->Frequency() == CurrentFrequency) && (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]); @@ -1078,8 +1075,7 @@ bool cPvrDevice::OpenDvr(void) return false; if (!SetVideoNorm(newNorm)) return false; - frequency = newFrequency; // since we don't tune: set it here - EncoderInput = newEncoderInput; + CurrentFrequency = newFrequency; // since we don't tune: set it here break; } case eRadio: @@ -1113,7 +1109,7 @@ bool cPvrDevice::OpenDvr(void) log(pvrERROR, "driver is unknown!!"); return false; } - if (!Tune(newEncoderInput, newFrequency)) + if (!Tune(newFrequency)) return false; break; } @@ -1133,7 +1129,7 @@ bool cPvrDevice::OpenDvr(void) return false; if (!SetVBImode(newLinesPerFrame, PvrSetup.SliceVBI)) return false; - if (!Tune(newEncoderInput, newFrequency)) + if (!Tune(newFrequency)) return false; } } //end: switch (newEncoderInput) @@ -1310,7 +1306,7 @@ bool cPvrDevice::ProvidesChannel(const cChannel *Channel, int Priority, bool *Ne return false; } if ((Priority >= 0) && Receiving(true)) { - if ((Channel->Number() == currentChannel.Number()) && (frequency == Channel->Frequency()) && (CurrentInput == input) && (CurrentNorm == norm)) { + if ((Channel->Number() == currentChannel.Number()) && (CurrentFrequency == 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 frequency; + int CurrentFrequency; int vpid; int apid; int tpid; @@ -87,7 +87,6 @@ private: eVideoInputs newEncoderInput; cString BusID; eEncState EncoderState; - eVideoInputs EncoderInput; int driver_apiversion; bool SupportsSlicedVBI; bool hasDecoder; @@ -133,7 +132,7 @@ public: void StopReadThread(void); void GetStandard(void); void TurnOffSlicedVBI(void); - bool Tune(eVideoInputs encoderInput, int frequency); + bool Tune(int frequency); bool SetInput(int input); bool SetAudioInput(int input); bool SetVideoNorm(uint64_t norm); |