Version 1.2.5pre2

- Updated VIVA, VIVA Plus, MTV Central and MTV 2 in channels.conf (thanks to
  Sebastian Frei).
- Changed "Studio Universal" to "Sci-Fi" in channels.conf.
- Fixed a crash when using the --terminal option without having access to the
  given terminal (thanks to Steffen Barszus for helping to debug this one).
- Added a note about the driver version needed for the still picture fix from
  version 1.2.5pre1 to work properly (thanks to Oliver Endriss for pointing
  this out).
- Fixed setting the primary device in case none of the devices provides an MPEG
  decoder (thanks to Rene Bartsch for reporting this one).
- Fixed handling the "Red" button in the "Schedules" menu in case there are no
  events listed for a particular channel (thanks to Christoph Hermanns for
  reporting this one).
- When setting an editing mark while in "Pause" mode, replay now immediately
  jumps to the marked frame (thanks to Oskar Signell for pointing out this
  problem).
- The DVB devices no longer send CA descriptors to the CAM while the EPG scanner
  is active (sometimes the CAMs got irritated when the device tuned to channels
  they couldn't handle).
This commit is contained in:
Klaus Schmidinger 2003-09-07 18:00:00 +02:00
parent e4b016980b
commit bff4529f01
9 changed files with 77 additions and 21 deletions

View File

@ -546,6 +546,8 @@ Steffen Barszus <st_barszus@gmx.de>
for reporting a bug in switching audio tracks in 'Transfer Mode' on the primary DVB device for reporting a bug in switching audio tracks in 'Transfer Mode' on the primary DVB device
for making the program use the values of VIDEODIR and PLUGINDIR defined in Makefile for making the program use the values of VIDEODIR and PLUGINDIR defined in Makefile
or Makefile.config as defaults or Makefile.config as defaults
for helping to debug a crash when using the --terminal option without having access
to the given terminal
Peter Seyringer <e9425234@student.tuwien.ac.at> Peter Seyringer <e9425234@student.tuwien.ac.at>
for reporting a bug in saving the polarization parameter of channels that have a for reporting a bug in saving the polarization parameter of channels that have a
@ -782,3 +784,18 @@ Peter Waechtler <pwaechtler@mac.com>
Robert Bartl <robert@bartl.priv.at> Robert Bartl <robert@bartl.priv.at>
for reporting a hangup in SVDRP when the client disappears without sending QUIT for reporting a hangup in SVDRP when the client disappears without sending QUIT
Sebastian Frei <sebastian@schnapsleichen.de>
for his support in keeping 'channels.conf' up-to-date.
Rene Bartsch <ml@bartschnet.de>
for reporting a bug in setting the primary device in case none of the devices
provides an MPEG decoder
Christoph Hermanns <christoph.hermanns@gmx.de>
for reporting a bug in handling the "Red" button in the "Schedules" menu in case
there are no events listed for a particular channel
Oskar Signell <oskar@signell.net>
for pointing out a problem with setting an editing mark while in "Pause" mode,
where replay was not immediately positioned to the marked frame

23
HISTORY
View File

@ -2348,7 +2348,30 @@ Video Disk Recorder Revision History
previous behaviour by commenting out the line previous behaviour by commenting out the line
#define VIDEO_STILLPICTURE_WORKS_WITH_VDR_FRAMES #define VIDEO_STILLPICTURE_WORKS_WITH_VDR_FRAMES
in VDR/dvbdevice.c. in VDR/dvbdevice.c.
Note that you need driver version 2003-08-23 or later for this to work!
- Fixed handling extra blanks in plugin command lines. - Fixed handling extra blanks in plugin command lines.
- Actually implemented the SVDRP command DELC. - Actually implemented the SVDRP command DELC.
- Now clearing the player device if there are too many poll timeouts in 'Transfer - Now clearing the player device if there are too many poll timeouts in 'Transfer
Mode', which avoids buffer overflows and black screens in such cases. Mode', which avoids buffer overflows and black screens in such cases.
2003-09-07: Version 1.2.5pre2
- Updated VIVA, VIVA Plus, MTV Central and MTV 2 in channels.conf (thanks to
Sebastian Frei).
- Changed "Studio Universal" to "Sci-Fi" in channels.conf.
- Fixed a crash when using the --terminal option without having access to the
given terminal (thanks to Steffen Barszus for helping to debug this one).
- Added a note about the driver version needed for the still picture fix from
version 1.2.5pre1 to work properly (thanks to Oliver Endriss for pointing
this out).
- Fixed setting the primary device in case none of the devices provides an MPEG
decoder (thanks to Rene Bartsch for reporting this one).
- Fixed handling the "Red" button in the "Schedules" menu in case there are no
events listed for a particular channel (thanks to Christoph Hermanns for
reporting this one).
- When setting an editing mark while in "Pause" mode, replay now immediately
jumps to the marked frame (thanks to Oskar Signell for pointing out this
problem).
- The DVB devices no longer send CA descriptors to the CAM while the EPG scanner
is active (sometimes the CAMs got irritated when the device tuned to channels
they couldn't handle).

View File

@ -56,7 +56,7 @@ Premiere 5:11797:h:S19.2E:27500:1279:1280,1281:0:101:29:0:0:0
Premiere 6:11797:h:S19.2E:27500:1535:1536:0:101:41:0:0:0 Premiere 6:11797:h:S19.2E:27500:1535:1536:0:101:41:0:0:0
Premiere 7:11797:h:S19.2E:27500:1023:1024:0:101:20:0:0:0 Premiere 7:11797:h:S19.2E:27500:1023:1024:0:101:20:0:0:0
13th Street:11758:h:S19.2E:27500:2303:2304:0:101:42:0:0:0 13th Street:11758:h:S19.2E:27500:2303:2304:0:101:42:0:0:0
Studio Universal:11798:h:S19.2E:27500:2047:2048:0:101:36:0:0:0 Sci-Fi:11758:h:S19.2E:27500:2047:2048:0:101:36:0:0:0
Premiere Serie:12031:h:S19.2E:27500:1023:1024:0:101:16:0:0:0 Premiere Serie:12031:h:S19.2E:27500:1023:1024:0:101:16:0:0:0
Disney Channel:11758:h:S19.2E:27500:2559:2560:0:101:34:0:0:0 Disney Channel:11758:h:S19.2E:27500:2559:2560:0:101:34:0:0:0
Premiere Nostalgie:12031:h:S19.2E:27500:2559:2560:0:101:516:0:0:0 Premiere Nostalgie:12031:h:S19.2E:27500:2559:2560:0:101:516:0:0:0
@ -145,13 +145,13 @@ Chamber TV:12552:v:S19.2E:22000:55:56:0:0:12180:0:0:0
RTL Tele Letzebuerg:12552:v:S19.2E:22000:168:144,146:0:0:3994:0:0:0 RTL Tele Letzebuerg:12552:v:S19.2E:22000:168:144,146:0:0:3994:0:0:0
VERONICA:12574:h:S19.2E:22000:161:84:0:0:5010:0:0:0 VERONICA:12574:h:S19.2E:22000:161:84:0:0:5010:0:0:0
VH1 Classic:12670:v:S19.2E:22000:3071:3072:0:0:28647:0:0:0 VH1 Classic:12670:v:S19.2E:22000:3071:3072:0:0:28647:0:0:0
MTV 2 Pop:12670:v:S19.2E:22000:3081:3082:0:0:28648:0:0:0 MTV 2:12225:h:S19.2E:27500:513:661:577:0:28640:0:0:0
Via 1 - Schöner Reisen:12148:h:S19.2E:27500:511:512:0:0:44:0:0:0 Via 1 - Schöner Reisen:12148:h:S19.2E:27500:511:512:0:0:44:0:0:0
Video Italia:12610:v:S19.2E:22000:121:122:0:0:12220:0:0:0 Video Italia:12610:v:S19.2E:22000:121:122:0:0:12220:0:0:0
ORF/ZDF:12670:h:S19.2E:22000:506:507:0:0:13012:0:0:0 ORF/ZDF:12670:h:S19.2E:22000:506:507:0:0:13012:0:0:0
VIVA:12670:v:S19.2E:22000:309:310:0:0:12732:0:0:0 VIVA:12670:v:S19.2E:22000:309:310:311:0:12732:0:0:0
VIVA PLUS:12552:v:S19.2E:22000:171:172:0:0:12120:0:0:0 VIVA PLUS:12552:v:S19.2E:22000:171:172:179:0:12120:0:0:0
MTV German:12670:v:S19.2E:22000:3031:3032:0:0:28643:0:0:0 MTV Central:11739:v:S19.2E:27500:3031:3032:3034:0:28653:0:0:0
QVC Germany:12552:v:S19.2E:22000:165:166:0:0:12100:0:0:0 QVC Germany:12552:v:S19.2E:22000:165:166:0:0:12100:0:0:0
Tele 5:12480:v:S19.2E:27500:1535:1536:0:0:51:0:0:0 Tele 5:12480:v:S19.2E:27500:1535:1536:0:0:51:0:0:0
:@201 Sky :@201 Sky

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * how to reach the author.
* *
* $Id: config.h 1.170 2003/08/30 08:39:37 kls Exp $ * $Id: config.h 1.171 2003/09/05 13:18:38 kls Exp $
*/ */
#ifndef __CONFIG_H #ifndef __CONFIG_H
@ -19,7 +19,7 @@
#include "device.h" #include "device.h"
#include "tools.h" #include "tools.h"
#define VDRVERSION "1.2.5pre1" #define VDRVERSION "1.2.5pre2"
#define VDRVERSNUM 10205 // Version * 10000 + Major * 100 + Minor #define VDRVERSNUM 10205 // Version * 10000 + Major * 100 + Minor
#define MAXPRIORITY 99 #define MAXPRIORITY 99

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * how to reach the author.
* *
* $Id: dvbdevice.c 1.63 2003/08/30 11:40:41 kls Exp $ * $Id: dvbdevice.c 1.64 2003/09/06 13:19:33 kls Exp $
*/ */
#include "dvbdevice.h" #include "dvbdevice.h"
@ -74,6 +74,7 @@ private:
cChannel channel; cChannel channel;
const char *diseqcCommands; const char *diseqcCommands;
bool active; bool active;
bool useCa;
time_t startTime; time_t startTime;
eTunerStatus tunerStatus; eTunerStatus tunerStatus;
cMutex mutex; cMutex mutex;
@ -84,7 +85,7 @@ public:
cDvbTuner(int Fd_Frontend, int CardIndex, fe_type_t FrontendType, cCiHandler *CiHandler); cDvbTuner(int Fd_Frontend, int CardIndex, fe_type_t FrontendType, cCiHandler *CiHandler);
virtual ~cDvbTuner(); virtual ~cDvbTuner();
bool IsTunedTo(const cChannel *Channel) const; bool IsTunedTo(const cChannel *Channel) const;
void Set(const cChannel *Channel, bool Tune); void Set(const cChannel *Channel, bool Tune, bool UseCa);
bool Locked(void) { return tunerStatus == tsLocked; } bool Locked(void) { return tunerStatus == tsLocked; }
}; };
@ -96,6 +97,7 @@ cDvbTuner::cDvbTuner(int Fd_Frontend, int CardIndex, fe_type_t FrontendType, cCi
ciHandler = CiHandler; ciHandler = CiHandler;
diseqcCommands = NULL; diseqcCommands = NULL;
active = false; active = false;
useCa = false;
tunerStatus = tsIdle; tunerStatus = tsIdle;
startTime = time(NULL); startTime = time(NULL);
Start(); Start();
@ -114,7 +116,7 @@ bool cDvbTuner::IsTunedTo(const cChannel *Channel) const
return tunerStatus != tsIdle && channel.Source() == Channel->Source() && channel.Frequency() == Channel->Frequency(); return tunerStatus != tsIdle && channel.Source() == Channel->Source() && channel.Frequency() == Channel->Frequency();
} }
void cDvbTuner::Set(const cChannel *Channel, bool Tune) void cDvbTuner::Set(const cChannel *Channel, bool Tune, bool UseCa)
{ {
cMutexLock MutexLock(&mutex); cMutexLock MutexLock(&mutex);
bool CaChange = !(Channel->GetChannelID() == channel.GetChannelID()); bool CaChange = !(Channel->GetChannelID() == channel.GetChannelID());
@ -122,6 +124,7 @@ void cDvbTuner::Set(const cChannel *Channel, bool Tune)
tunerStatus = tsSet; tunerStatus = tsSet;
else if (tunerStatus == tsCam && CaChange) else if (tunerStatus == tsCam && CaChange)
tunerStatus = tsTuned; tunerStatus = tsTuned;
useCa = UseCa;
if (Channel->Ca() && CaChange) if (Channel->Ca() && CaChange)
startTime = time(NULL); startTime = time(NULL);
channel = *Channel; channel = *Channel;
@ -267,7 +270,7 @@ void cDvbTuner::Action(void)
} }
if (tunerStatus >= tsLocked) { if (tunerStatus >= tsLocked) {
if (ciHandler) { if (ciHandler) {
if (ciHandler->Process()) { if (ciHandler->Process() && useCa) {
if (tunerStatus != tsCam) {//XXX TODO update in case the CA descriptors have changed if (tunerStatus != tsCam) {//XXX TODO update in case the CA descriptors have changed
for (int Slot = 0; Slot < ciHandler->NumSlots(); Slot++) { for (int Slot = 0; Slot < ciHandler->NumSlots(); Slot++) {
uchar buffer[2048]; uchar buffer[2048];
@ -673,6 +676,7 @@ bool cDvbDevice::SetChannelDevice(const cChannel *Channel, bool LiveView)
StartTransferMode = false; StartTransferMode = false;
#endif #endif
// XXX 1.3: use the same mechanism as below (!EITScanner.UsesDevice(this))
if (EITScanner.Active()) { if (EITScanner.Active()) {
StartTransferMode = false; StartTransferMode = false;
TurnOnLivePIDs = false; TurnOnLivePIDs = false;
@ -690,7 +694,7 @@ bool cDvbDevice::SetChannelDevice(const cChannel *Channel, bool LiveView)
if (TurnOffLivePIDs) if (TurnOffLivePIDs)
TurnOffLiveMode(); TurnOffLiveMode();
dvbTuner->Set(Channel, DoTune); dvbTuner->Set(Channel, DoTune, !EITScanner.UsesDevice(this)); //XXX 1.3: this is an ugly hack - find a cleaner solution
// PID settings: // PID settings:

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * how to reach the author.
* *
* $Id: eitscan.c 1.13 2003/05/24 13:34:59 kls Exp $ * $Id: eitscan.c 1.14 2003/09/06 13:06:13 kls Exp $
*/ */
#include "eitscan.h" #include "eitscan.h"
@ -17,6 +17,7 @@ cEITScanner EITScanner;
cEITScanner::cEITScanner(void) cEITScanner::cEITScanner(void)
{ {
lastScan = lastActivity = time(NULL); lastScan = lastActivity = time(NULL);
currentDevice = NULL;
currentChannel = 0; currentChannel = 0;
memset(lastChannel, 0, sizeof(lastChannel)); memset(lastChannel, 0, sizeof(lastChannel));
numTransponders = 0; numTransponders = 0;
@ -66,7 +67,9 @@ void cEITScanner::Process(void)
if (Device == cDevice::PrimaryDevice() && !currentChannel) { if (Device == cDevice::PrimaryDevice() && !currentChannel) {
currentChannel = Device->CurrentChannel(); currentChannel = Device->CurrentChannel();
} }
currentDevice = Device;
Device->SwitchChannel(Channel, false); Device->SwitchChannel(Channel, false);
currentDevice = NULL;
break; break;
} }
} }

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * how to reach the author.
* *
* $Id: eitscan.h 1.3 2003/05/24 13:21:36 kls Exp $ * $Id: eitscan.h 1.4 2003/09/06 13:05:51 kls Exp $
*/ */
#ifndef __EITSCAN_H #ifndef __EITSCAN_H
@ -19,6 +19,7 @@ private:
ScanTimeout = 20 ScanTimeout = 20
}; };
time_t lastScan, lastActivity; time_t lastScan, lastActivity;
cDevice *currentDevice;
int currentChannel; int currentChannel;
int lastChannel[MAXDEVICES]; int lastChannel[MAXDEVICES];
int numTransponders, *transponders; int numTransponders, *transponders;
@ -27,6 +28,7 @@ public:
cEITScanner(void); cEITScanner(void);
~cEITScanner(); ~cEITScanner();
bool Active(void) { return currentChannel; } bool Active(void) { return currentChannel; }
bool UsesDevice(const cDevice *Device) { return currentDevice == Device; }
void Activity(void); void Activity(void);
void Process(void); void Process(void);
}; };

13
menu.c
View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * how to reach the author.
* *
* $Id: menu.c 1.269 2003/08/24 14:28:44 kls Exp $ * $Id: menu.c 1.271 2003/09/06 10:26:45 kls Exp $
*/ */
#include "menu.h" #include "menu.h"
@ -1250,7 +1250,7 @@ cMenuWhatsOn::cMenuWhatsOn(const cSchedules *Schedules, bool Now, int CurrentCha
currentChannel = CurrentChannelNr; currentChannel = CurrentChannelNr;
free(pArray); free(pArray);
SetHelp(tr("Record"), Now ? tr("Next") : tr("Now"), tr("Button$Schedule"), tr("Switch")); SetHelp(Count() ? tr("Record") : NULL, Now ? tr("Next") : tr("Now"), tr("Button$Schedule"), tr("Switch"));
} }
const cEventInfo *cMenuWhatsOn::ScheduleEventInfo(void) const cEventInfo *cMenuWhatsOn::ScheduleEventInfo(void)
@ -1358,7 +1358,7 @@ cMenuSchedule::cMenuSchedule(void)
cMenuWhatsOn::SetCurrentChannel(channel->Number()); cMenuWhatsOn::SetCurrentChannel(channel->Number());
schedules = cSIProcessor::Schedules(mutexLock); schedules = cSIProcessor::Schedules(mutexLock);
PrepareSchedule(channel); PrepareSchedule(channel);
SetHelp(tr("Record"), tr("Now"), tr("Next")); SetHelp(Count() ? tr("Record") : NULL, tr("Now"), tr("Next"));
} }
} }
@ -1470,7 +1470,7 @@ eOSState cMenuSchedule::ProcessKey(eKeys Key)
PrepareSchedule(channel); PrepareSchedule(channel);
if (channel->Number() != cDevice::CurrentChannel()) { if (channel->Number() != cDevice::CurrentChannel()) {
otherChannel = channel->Number(); otherChannel = channel->Number();
SetHelp(tr("Record"), tr("Now"), tr("Next"), tr("Switch")); SetHelp(Count() ? tr("Record") : NULL, tr("Now"), tr("Next"), tr("Switch"));
} }
Display(); Display();
} }
@ -3531,6 +3531,10 @@ void cReplayControl::MarkToggle(void)
else { else {
marks.Add(Current); marks.Add(Current);
ShowTimed(2); ShowTimed(2);
bool Play, Forward;
int Speed;
if (GetReplayMode(Play, Forward, Speed) && !Play)
Goto(Current, true);
} }
marks.Save(); marks.Save();
} }
@ -3659,7 +3663,6 @@ eOSState cReplayControl::ProcessKey(eKeys Key)
DoShowMode = false; DoShowMode = false;
switch (Key) { switch (Key) {
// Editing: // Editing:
//XXX should we do this only when the ProgressDisplay is on???
case kMarkToggle: MarkToggle(); break; case kMarkToggle: MarkToggle(); break;
case kMarkJumpBack: MarkJump(false); break; case kMarkJumpBack: MarkJump(false); break;
case kMarkJumpForward: MarkJump(true); break; case kMarkJumpForward: MarkJump(true); break;

8
vdr.c
View File

@ -22,7 +22,7 @@
* *
* The project's page is at http://www.cadsoft.de/vdr * The project's page is at http://www.cadsoft.de/vdr
* *
* $Id: vdr.c 1.166 2003/08/24 11:18:04 kls Exp $ * $Id: vdr.c 1.168 2003/09/05 13:14:16 kls Exp $
*/ */
#include <getopt.h> #include <getopt.h>
@ -199,6 +199,10 @@ int main(int argc, char *argv[])
case 's': Shutdown = optarg; case 's': Shutdown = optarg;
break; break;
case 't': Terminal = optarg; case 't': Terminal = optarg;
if (access(Terminal, R_OK | W_OK) < 0) {
fprintf(stderr, "vdr: can't access terminal: %s\n", Terminal);
return 2;
}
break; break;
case 'V': DisplayVersion = true; case 'V': DisplayVersion = true;
break; break;
@ -383,7 +387,7 @@ int main(int argc, char *argv[])
const char *msg = "no primary device found - using first device!"; const char *msg = "no primary device found - using first device!";
fprintf(stderr, "vdr: %s\n", msg); fprintf(stderr, "vdr: %s\n", msg);
esyslog("ERROR: %s", msg); esyslog("ERROR: %s", msg);
if (!cDevice::SetPrimaryDevice(0)) if (!cDevice::SetPrimaryDevice(1))
return 2; return 2;
if (!cDevice::PrimaryDevice()) { if (!cDevice::PrimaryDevice()) {
const char *msg = "no primary device found - giving up!"; const char *msg = "no primary device found - giving up!";