summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Hanisch <dvb@flensrocker.de>2010-03-20 11:29:16 +0100
committerLars Hanisch <dvb@flensrocker.de>2010-03-20 11:29:16 +0100
commit5a2a807bad756353f681b3e0c2db7c1f7ff9d85e (patch)
tree07246370cb6e949056e7da30df08335e738c7744
parenta6a1e233614b8215c10565c33357263d0ba3d831 (diff)
downloadvdr-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.c54
-rw-r--r--device.h5
2 files changed, 27 insertions, 32 deletions
diff --git a/device.c b/device.c
index a7d100d..496037e 100644
--- a/device.c
+++ b/device.c
@@ -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());
diff --git a/device.h b/device.h
index a43ef85..693591e 100644
--- a/device.h
+++ b/device.h
@@ -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);