Compare commits

...

31 Commits

Author SHA1 Message Date
Klaus Schmidinger
578cfe64a8 Adjusted release date 2013-10-23 08:59:34 +02:00
Klaus Schmidinger
746a9f88e7 Revoked "Added maximum signal strength value for TechniSat SkyStar 2 DVB-S rev 2.3P" 2013-10-21 09:01:53 +02:00
Klaus Schmidinger
fb74e0feeb Fixed an inconsistent behavior between opening the Recordings menu manually via the main menu and by pressing the Recordings key 2013-10-16 09:49:26 +02:00
Klaus Schmidinger
cb1498a609 Added maximum signal strength value for TechniSat SkyStar 2 DVB-S rev 2.3P 2013-10-13 14:47:41 +02:00
Klaus Schmidinger
ddce16326c Changed cRecorder::Action() to use cTimeMs instead of time() 2013-10-12 12:11:21 +02:00
Klaus Schmidinger
c8d77e241f Now also checking the source (in addition to the transponder) when setting the system time from the TDT 2013-10-12 11:26:07 +02:00
Klaus Schmidinger
965b3471b7 Fixed writing group separators to channels.conf that contain a comma 2013-10-11 11:42:19 +02:00
Klaus Schmidinger
0f75df5452 The Yellow button in the main menu no longer acts as "Pause" if "Pause key handling" is set to "do not pause live video" 2013-09-07 12:54:59 +02:00
Klaus Schmidinger
c37fb11a08 Unified the internal sequence of actions when pressing the Blue and the Back key, respectively, during replay 2013-09-07 10:25:10 +02:00
Klaus Schmidinger
c169e20141 Fixed cleaning up old EPG events in case no epg data file is given 2013-09-01 09:20:07 +02:00
Klaus Schmidinger
c3a3b70fa0 All bonded devices (except for the master) now turn off their LNB power completely to avoid problems when receiving vertically polarized transponders 2013-08-23 09:53:47 +02:00
Klaus Schmidinger
fc03e021bb Increased the value of MAXRETRIES to 20 to reduce the probability of disturbances in transfer mode 2013-08-22 12:37:19 +02:00
Klaus Schmidinger
6e6e468148 cDevice::IsPrimaryDevice() now also checks whether the primary device actually has a decoder and returns false otherwise 2013-08-22 12:02:12 +02:00
Klaus Schmidinger
1f0a55ca7d Fixed a possible crash when shutting down VDR while subtitles are being displayed 2013-08-22 10:36:07 +02:00
Klaus Schmidinger
917331767b Fixed handling LIRC events in case repeated events are lost 2013-08-22 09:37:12 +02:00
Klaus Schmidinger
0161639e93 Fixed handling the -o option (short form of --outputonly) 2013-08-22 08:30:52 +02:00
Klaus Schmidinger
77da7bb20c No longer trying to delete old recordings in AssertFreeDiskSpace() if the given Priority is less than 1 2013-08-21 13:59:06 +02:00
Klaus Schmidinger
acdfbb5aad Fixed asserting free disk space in the cutter 2013-08-21 13:46:13 +02:00
Klaus Schmidinger
cd53d57779 Fixed a crash in the LCARS skin's main menu in case there is no current channel 2013-05-19 12:09:55 +02:00
Klaus Schmidinger
0d14872adc Fixed an endless loop in the DrawEllipse() functions for very small ellipses 2013-05-18 12:43:41 +02:00
Klaus Schmidinger
90f4648a7c Fixed unwanted version tag on checkout of older version 2013-05-02 10:21:37 +02:00
Klaus Schmidinger
be88699b00 Fixed an error message when parsing SCR values in diseqc.conf 2013-05-02 09:33:47 +02:00
Klaus Schmidinger
1b1fe2c887 Fixed no longer generating any editing marks if the edited recording results in just one single sequence 2013-05-02 09:23:21 +02:00
Klaus Schmidinger
fa77b5c2b2 Fixed displaying the frame number when setting an editing mark 2013-04-27 10:34:08 +02:00
Klaus Schmidinger
cffde6ee09 Fixed multiple occurrences of the same directory in the recordings list in case there are directories that only differ in non-alphanumeric characters 2013-04-27 10:18:08 +02:00
Klaus Schmidinger
2266b0e633 Adjusted release date 2013-04-13 11:30:25 +02:00
Klaus Schmidinger
06f7c2d414 Changed cThread::SetIOPriority() from "best effort class" to "idle class" in order to improve overall performance when an editing process is running 2013-04-11 08:59:26 +02:00
Klaus Schmidinger
1b1dc6d775 Fixed handling '/' and '~' in recording file names in case DirectoryEncoding is used 2013-04-11 08:24:04 +02:00
Klaus Schmidinger
e5971d2684 Added definitions for older DVB API versions, back until 5.0 2013-04-09 13:44:50 +02:00
Klaus Schmidinger
ae208771e8 Fixed an endless loop in cTextWrapper::Set() in case the given Width is smaller than one character 2013-04-07 14:54:15 +02:00
Klaus Schmidinger
df4ea10419 Fixed initializing cDevice::keepTracks 2013-04-05 10:48:51 +02:00
26 changed files with 331 additions and 132 deletions

View File

@ -618,6 +618,8 @@ Helmut Auer <vdr@helmutauer.de>
for suggesting to read the epg.data file in a separate thread
for some improvements to allowing the parameters PATH and NAME to the --dirnames
command line option to be left empty to use the default values if only ENC shall be set
for reporting an inconsistent behavior between opening the Recordings menu manually
via the main menu and by pressing the Recordings key
Jeremy Hall <jhall@UU.NET>
for fixing an incomplete initialization of the filter parameters in eit.c
@ -700,6 +702,8 @@ Oliver Endriss <o.endriss@gmx.de>
for helping to debug a problem with reduced number of retries in Transfer Mode on
SD-FF cards
for reporting a problem with resuming replay of PES recordings
for suggesting to make all bonded devices (except for the master) turn off their LNB
power completely to avoid problems when receiving vertically polarized transponders
Reinhard Walter Buchner <rw.buchner@freenet.de>
for adding some satellites to 'sources.conf'
@ -1013,9 +1017,11 @@ Andreas Mair <amair.sob@googlemail.com>
for fixing the type of MBperMinute in cVideoDiskUsage::HasChanged()
for reporting a bug in sorting recordings in case two folders have the same name,
but one of them ends in an additional digit, as in "abc" and "abc2"
for reporting multiple occurrences of the same directory in the recordings list ini
for reporting multiple occurrences of the same directory in the recordings list in
case there are directories that only differ in non-alphanumeric characters
for reporting a problem with reduced number of retries in Transfer Mode on SD-FF cards
for fixing multiple occurrences of the same directory in the recordings list in case
there are directories that only differ in non-alphanumeric characters
Olivier Jacques <jacquesolivier@hotmail.com>)
for translating OSD texts to the French language
@ -2015,6 +2021,8 @@ Ville Skytt
be escaped
for changing the template for PLGCFG to $(CONFDIR)/plugins.mk
for updating the help and man page entry about the location of the epg.data file
for reporting a possible crash when shutting down VDR while subtitles are being
displayed
Steffen Beyer <cpunk@reactor.de>
for fixing setting the colored button help after deleting a recording in case the next
@ -2100,6 +2108,7 @@ Thomas G
for suggesting to make the 'Allowed' parameter in cMenuEditStrItem() NULL by default,
which results in using tr(FileNameChars)
for fixing handling "none" color entries in XPM files
for fixing displaying the frame number when setting an editing mark
David Woodhouse <dwmw2@infradead.org>
for his help in replacing the get/put_unaligned() macros from asm/unaligned.h with
@ -2537,6 +2546,8 @@ Ulf Kiener <webmaster@ulf-kiener.de>
for suggesting to add user defined key kUser0
for suggesting to perform absolute jumps when replaying a recording (via the Red key)
only if an actual value has been entered
for suggesting to make the Yellow button in the main menu not act as "Pause" if
"Pause key handling" is set to "do not pause live video"
Jörg Wendel <vdr-ml@jwendel.de>
for reporting that cPlugin::Active() was called too often
@ -2598,6 +2609,8 @@ Halim Sahin <halim.sahin@t-online.de>
for suggesting to make the "Source" item in the "Edit channel" menu wrap around the
list of sources
for reporting a crash when creating a new channel if the channel list is empty
for reporting that editing marks were generated even if the edited recording resulted
in just one single sequence
Denis Knauf <denis.knauf@gmail.com>
for reporting a missing '-' at the next to last line of SVDRP help texts
@ -2832,6 +2845,8 @@ Lars Hanisch <dvb@flensrocker.de>
for fixing a typo in skins.h
for fixing some #include statements in plugins to use <vdr/...> instead of "vdr/..."
for reporting an invalid line in channels.conf.terr
for fixing handling '/' and '~' in recording file names in case DirectoryEncoding is
used
Alex Lasnier <alex@fepg.org>
for adding tuning support for ATSC devices
@ -2946,6 +2961,7 @@ Johan Andersson <jna@jna.pp.se>
Dave Pickles <dave@pickles.me.uk>
for adding support for "content identifier descriptor" and "default authority
descriptor" to 'libsi'
for reporting that old EPG events are not cleaned up in case no epg data file is given
Holger Dengler <holger.dengler@gmx.de>
for making the isnumber() function check the given pointer for NULL
@ -2994,6 +3010,11 @@ Torsten Lang <info@torstenlang.de>
for suggesting to increase the size of the TS buffer to 5MB and that of the Recorder
buffer to 20MB to better handle HD recordings
for fixing setting the video format in the dvbhdffdevice
for reporting a problem with setting the system time from the TDT in case devices
are tuned to the same transponder on different sources, and these broadcast different
time data
for reporting a problem with unjustified "video data stream broken" errors in case
the system time is changed while a recording is active
Christian Ruppert <idl0r@gentoo.org>
for some improvements to the Makefiles
@ -3135,3 +3156,26 @@ Zoran Turalija <zoran.turalija@gmail.com>
for translating OSD texts to the Serbian language
for adding maximum SNR and signal strength value for TechniSat SkyStar HD2
for pointing out that the language file sr_SR.po should be renamed to sr_RS.po
Stefan Braun <louis.braun@gmx.de>
for reporting an endless loop in cTextWrapper::Set() in case the given Width is smaller
than one character
for reporting an endless loop in the DrawEllipse() functions for very small ellipses
Jochen Dolze <vdr@dolze.de>
for changing cThread::SetIOPriority() from "best effort class" to "idle class" in order
to improve overall performance when an editing process is running
Dominique Dumont <domi.dumont@free.fr>
for reporting a crash in the LCARS skin's main menu in case there is no current channel
Manfred Völkel <mvoelkel@digitaldevices.de>
for suggesting to make all bonded devices (except for the master) turn off their LNB
power completely to avoid problems when receiving vertically polarized transponders
Thomas Maass <mase@setho.org>
for reporting a difference in the internal sequence of actions when pressing the Blue
and the Back key, respectively, during replay
Eike Edener <eike@edener.de>
for reporting a bug in writing group separators to channels.conf that contain a comma

75
HISTORY
View File

@ -7328,7 +7328,7 @@ Video Disk Recorder Revision History
+ no longer generating an editing mark at the "end" of the edited recording (this
was actually generated at the beginning of the last GOP, so that a subsequent
edit would have cut off the last GOP)
+ no longer generating any editing marks if the edited recording results on just
+ no longer generating any editing marks if the edited recording results in just
one single sequence
+ ignoring pairs of editing marks that are placed at exactly the same position of
a recording when actually cutting the recording
@ -7773,7 +7773,6 @@ Video Disk Recorder Revision History
Dominic Evans).
- Updated the default channels.conf file.
2013-03-31: Version 2.0.0
- Updated the Lithuanian OSD texts (thanks to Valdemaras Pipiras).
@ -7782,3 +7781,75 @@ Video Disk Recorder Revision History
- Fixed handling overlapping pending timers (reported by Matthias Senzel).
- Bumped all version numbers to 2.0.0.
- Official release.
2013-04-13: Version 2.0.1
- Fixed initializing cDevice::keepTracks.
- Fixed an endless loop in cTextWrapper::Set() in case the given Width is smaller than
one character (reported by Stefan Braun).
- Added definitions for older DVB API versions, back until 5.0 (based on a patch from
Udo Richter).
- Fixed handling '/' and '~' in recording file names in case DirectoryEncoding is
used (thanks to Lars Hanisch).
- Changed cThread::SetIOPriority() from "best effort class" to "idle class" in order to
improve overall performance when an editing process is running (thanks to Jochen
Dolze).
2013-05-19: Version 2.0.2
- Fixed multiple occurrences of the same directory in the recordings list in case there
are directories that only differ in non-alphanumeric characters (was broken by
"Fixed selecting the last replayed recording in the Recordings menu in case there
are folders and plain recordings with names that differ only in non-alphanumeric
characters" in version 1.7.36).
- Fixed displaying the frame number when setting an editing mark (thanks to Thomas
Günther).
- Fixed no longer generating any editing marks if the edited recording results in just
one single sequence.
- Fixed an error message when parsing SCR values in diseqc.conf.
- Fixed an unexpected RCS version tag in the newplugin script.
- Fixed an endless loop in the DrawEllipse() functions for very small ellipses (reported
by Stefan Braun).
- Fixed a crash in the LCARS skin's main menu in case there is no current channel
(reported by Dominique Dumont).
2013-09-01: Version 2.0.3
- Fixed asserting free disk space in the cutter.
- No longer trying to delete old recordings in AssertFreeDiskSpace() if the given
Priority is less than 1.
- Fixed handling LIRC events in case repeated events are lost.
- Fixed a possible crash when shutting down VDR while subtitles are being displayed
(reported by Ville Skyttä).
- cDevice::IsPrimaryDevice() now also checks whether the primary device actually has
a decoder and returns false otherwise. This should improve device allocation on
systems that are only used as a receiver and don't actually display anything.
- Increased the value of MAXRETRIES to 20 to reduce the probability of disturbances
in transfer mode.
- All bonded devices (except for the master) now turn off their LNB power completely
to avoid problems when receiving vertically polarized transponders (suggested by
Manfred Völkel and Oliver Endriss).
- Fixed cleaning up old EPG events in case no epg data file is given (reported by
Dave Pickles).
2013-10-23: Version 2.0.4
- Unified the internal sequence of actions when pressing the Blue and the Back key,
respectively, during replay (reported by Thomas Maass).
- The Yellow button in the main menu no longer acts as "Pause" if "Pause key handling"
is set to "do not pause live video" (suggested by Ulf Kiener).
- Fixed writing group separators to channels.conf that contain a comma (reported by
Eike Edener).
- Now also checking the source (in addition to the transponder) when setting the
system time from the TDT, which avoids problems in case devices are tuned to the
same transponder on different sources, and these broadcast different time data
(reported by Torsten Lang).
- Changed cRecorder::Action() to use cTimeMs instead of time() to avoid problems with
unjustified "video data stream broken" errors in case the system time is changed
while a recording is active (reported by Torsten Lang).
- Fixed an inconsistent behavior between opening the Recordings menu manually via the
main menu and by pressing the Recordings key. In the latter case it automatically
opened all sub folders to position the cursor to the last replayed recording, which
is unexpected at this point (reported by Helmut Auer). You can still navigate to
the last replayed recording (if any) by pressing Ok repeatedly in the Recordings
menu.

View File

@ -45,3 +45,8 @@ VDR Plugin 'dvbsddevice' Revision History
2013-03-31: Version 2.0.0
- Official release.
2013-08-22: Version 2.0.1
- Fixed handling the -o option (short form of --outputonly; problem reported by
Mario Edelmann).

View File

@ -3,14 +3,14 @@
*
* See the README file for copyright information and how to reach the author.
*
* $Id: dvbsddevice.c 1.10 2013/03/31 09:30:18 kls Exp $
* $Id: dvbsddevice.c 1.10.1.1 2013/08/22 08:30:52 kls Exp $
*/
#include <getopt.h>
#include <vdr/plugin.h>
#include "dvbsdffdevice.h"
static const char *VERSION = "2.0.0";
static const char *VERSION = "2.0.1";
static const char *DESCRIPTION = "SD Full Featured DVB device";
class cPluginDvbsddevice : public cPlugin {
@ -48,7 +48,7 @@ bool cPluginDvbsddevice::ProcessArgs(int argc, char *argv[])
};
int c;
while ((c = getopt_long(argc, argv, "", long_options, NULL)) != -1) {
while ((c = getopt_long(argc, argv, "o", long_options, NULL)) != -1) {
switch (c) {
case 'o': probe->SetOutputOnly(true);
break;

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: channels.c 2.24 2012/07/14 12:15:00 kls Exp $
* $Id: channels.c 2.24.1.1 2013/10/11 11:40:02 kls Exp $
*/
#include "channels.h"
@ -503,12 +503,14 @@ cString cChannel::ToText(const cChannel *Channel)
char FullName[strlen(Channel->name) + 1 + strlen(Channel->shortName) + 1 + strlen(Channel->provider) + 1 + 10]; // +10: paranoia
char *q = FullName;
q += sprintf(q, "%s", Channel->name);
if (!isempty(Channel->shortName))
q += sprintf(q, ",%s", Channel->shortName);
else if (strchr(Channel->name, ','))
q += sprintf(q, ",");
if (!isempty(Channel->provider))
q += sprintf(q, ";%s", Channel->provider);
if (!Channel->groupSep) {
if (!isempty(Channel->shortName))
q += sprintf(q, ",%s", Channel->shortName);
else if (strchr(Channel->name, ','))
q += sprintf(q, ",");
if (!isempty(Channel->provider))
q += sprintf(q, ";%s", Channel->provider);
}
*q = 0;
strreplace(FullName, ':', '|');
cString buffer;

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: config.h 2.76 2013/03/31 09:30:18 kls Exp $
* $Id: config.h 2.76.1.4 2013/09/07 10:25:10 kls Exp $
*/
#ifndef __CONFIG_H
@ -22,8 +22,8 @@
// VDR's own version number:
#define VDRVERSION "2.0.0"
#define VDRVERSNUM 20000 // Version * 10000 + Major * 100 + Minor
#define VDRVERSION "2.0.4"
#define VDRVERSNUM 20004 // Version * 10000 + Major * 100 + Minor
// The plugin API's version number:

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: cutter.c 2.25 2013/03/18 09:40:49 kls Exp $
* $Id: cutter.c 2.25.1.2 2013/08/21 13:43:46 kls Exp $
*/
#include "cutter.h"
@ -556,6 +556,8 @@ bool cCuttingThread::ProcessSequence(int LastEndIndex, int BeginIndex, int EndIn
bool Independent;
int Length;
if (LoadFrame(Index, Buffer, Independent, Length)) {
// Make sure there is enough disk space:
AssertFreeDiskSpace(-1);
bool CutIn = !SeamlessBegin && Index == BeginIndex;
bool CutOut = !SeamlessEnd && Index == EndIndex - 1;
bool DeletedFrame = false;
@ -581,7 +583,7 @@ bool cCuttingThread::ProcessSequence(int LastEndIndex, int BeginIndex, int EndIn
}
fileSize += Length;
// Generate marks at the editing points in the edited recording:
if (numSequences > 0 && Index == BeginIndex) {
if (numSequences > 1 && Index == BeginIndex) {
if (toMarks.Count() > 0)
toMarks.Add(toIndex->Last());
toMarks.Add(toIndex->Last());
@ -608,8 +610,6 @@ void cCuttingThread::Action(void)
cCondWait::SleepMs(100);
continue;
}
// Make sure there is enough disk space:
AssertFreeDiskSpace(-1);
// Determine the actual begin and end marks, skipping any marks at the same position:
cMark *EndMark = fromMarks.GetNextEnd(BeginMark);
// Process the current sequence:

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: device.c 2.74 2013/03/07 13:18:35 kls Exp $
* $Id: device.c 2.74.1.2 2013/08/22 10:35:30 kls Exp $
*/
#include "device.h"
@ -94,11 +94,11 @@ cDevice::cDevice(void)
player = NULL;
isPlayingVideo = false;
keepTracks = false; // used in ClrAvailableTracks()!
ClrAvailableTracks();
currentAudioTrack = ttNone;
currentAudioTrackMissingCount = 0;
currentSubtitleTrack = ttNone;
keepTracks = false;
liveSubtitle = NULL;
dvbSubtitleConverter = NULL;
autoSelectPreferredSubtitleLanguage = true;
@ -118,6 +118,8 @@ cDevice::~cDevice()
DetachAllReceivers();
delete liveSubtitle;
delete dvbSubtitleConverter;
if (this == primaryDevice)
primaryDevice = NULL;
}
bool cDevice::WaitForAllDevicesReady(int Timeout)
@ -362,7 +364,6 @@ void cDevice::SetCamSlot(cCamSlot *CamSlot)
void cDevice::Shutdown(void)
{
deviceHooks.Clear();
primaryDevice = NULL;
for (int i = 0; i < numDevices; i++) {
delete device[i];
device[i] = NULL;

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: device.h 2.47 2013/02/16 15:20:01 kls Exp $
* $Id: device.h 2.47.1.1 2013/08/22 12:01:48 kls Exp $
*/
#ifndef __DEVICE_H
@ -196,7 +196,7 @@ protected:
///< A derived class must call the MakePrimaryDevice() function of its
///< base class.
public:
bool IsPrimaryDevice(void) const { return this == primaryDevice; }
bool IsPrimaryDevice(void) const { return this == primaryDevice && HasDecoder(); }
int CardIndex(void) const { return cardIndex; }
///< Returns the card index of this device (0 ... MAXDEVICES - 1).
int DeviceNumber(void) const;

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: diseqc.c 2.9 2011/09/17 14:13:31 kls Exp $
* $Id: diseqc.c 2.9.1.1 2013/05/02 09:33:12 kls Exp $
*/
#include "diseqc.h"
@ -192,7 +192,7 @@ const char *cDiseqc::GetScrBank(const char *s) const
}
return p;
}
esyslog("ERROR: more than one scr bank in '%s'", s - 1);
esyslog("ERROR: invalid value for scr bank in '%s'", s - 1);
return NULL;
}

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: dvbdevice.c 2.88 2013/03/16 15:23:35 kls Exp $
* $Id: dvbdevice.c 2.88.1.4 2013/10/21 09:01:21 kls Exp $
*/
#include "dvbdevice.h"
@ -21,10 +21,7 @@
#include "menuitems.h"
#include "sourceparams.h"
#if (DVB_API_VERSION << 8 | DVB_API_VERSION_MINOR) < 0x0508
#define DTV_STREAM_ID DTV_DVBT2_PLP_ID
#define FE_CAN_MULTISTREAM 0x4000000
#endif
static int DvbApiVersion = 0x0000; // the version of the DVB driver actually in use (will be determined by the first device created)
#define DVBS_TUNE_TIMEOUT 9000 //ms
#define DVBS_LOCK_TIMEOUT 2000 //ms
@ -700,7 +697,7 @@ void cDvbTuner::ExecuteDiseqc(const cDiseqc *Diseqc, unsigned int *Frequency)
void cDvbTuner::ResetToneAndVoltage(void)
{
CHECK(ioctl(fd_frontend, FE_SET_VOLTAGE, SEC_VOLTAGE_13));
CHECK(ioctl(fd_frontend, FE_SET_VOLTAGE, bondedTuner ? SEC_VOLTAGE_OFF : SEC_VOLTAGE_13));
CHECK(ioctl(fd_frontend, FE_SET_TONE, SEC_TONE_OFF));
}
@ -801,7 +798,8 @@ bool cDvbTuner::SetFrontend(void)
// DVB-S2
SETCMD(DTV_PILOT, PILOT_AUTO);
SETCMD(DTV_ROLLOFF, dtp.RollOff());
SETCMD(DTV_STREAM_ID, dtp.StreamId());
if (DvbApiVersion >= 0x0508)
SETCMD(DTV_STREAM_ID, dtp.StreamId());
}
else {
// DVB-S
@ -835,7 +833,11 @@ bool cDvbTuner::SetFrontend(void)
SETCMD(DTV_HIERARCHY, dtp.Hierarchy());
if (frontendType == SYS_DVBT2) {
// DVB-T2
SETCMD(DTV_STREAM_ID, dtp.StreamId());
if (DvbApiVersion >= 0x0508) {
SETCMD(DTV_STREAM_ID, dtp.StreamId());
}
else if (DvbApiVersion >= 0x0503)
SETCMD(DTV_DVBT2_PLP_ID_LEGACY, dtp.StreamId());
}
tuneTimeout = DVBT_TUNE_TIMEOUT;
@ -1178,28 +1180,44 @@ bool cDvbDevice::QueryDeliverySystems(int fd_frontend)
LOG_ERROR;
return false;
}
#if (DVB_API_VERSION << 8 | DVB_API_VERSION_MINOR) >= 0x0505
dtv_property Frontend[1];
memset(&Frontend, 0, sizeof(Frontend));
dtv_properties CmdSeq;
memset(&CmdSeq, 0, sizeof(CmdSeq));
CmdSeq.props = Frontend;
SETCMD(DTV_ENUM_DELSYS, 0);
int Result = ioctl(fd_frontend, FE_GET_PROPERTY, &CmdSeq);
if (Result == 0) {
for (uint i = 0; i < Frontend[0].u.buffer.len; i++) {
if (numDeliverySystems >= MAXDELIVERYSYSTEMS) {
esyslog("ERROR: too many delivery systems on frontend %d/%d", adapter, frontend);
break;
}
deliverySystems[numDeliverySystems++] = Frontend[0].u.buffer.data[i];
}
// Determine the version of the running DVB API:
if (!DvbApiVersion) {
memset(&Frontend, 0, sizeof(Frontend));
memset(&CmdSeq, 0, sizeof(CmdSeq));
CmdSeq.props = Frontend;
SETCMD(DTV_API_VERSION, 0);
if (ioctl(fd_frontend, FE_GET_PROPERTY, &CmdSeq) != 0) {
LOG_ERROR;
return false;
}
DvbApiVersion = Frontend[0].u.data;
isyslog("DVB API version is 0x%04X (VDR was built with 0x%04X)", DvbApiVersion, DVBAPIVERSION);
}
else {
esyslog("ERROR: can't query delivery systems on frontend %d/%d - falling back to legacy mode", adapter, frontend);
#else
{
#endif
// Determine the types of delivery systems this device provides:
bool LegacyMode = true;
if (DvbApiVersion >= 0x0505) {
memset(&Frontend, 0, sizeof(Frontend));
memset(&CmdSeq, 0, sizeof(CmdSeq));
CmdSeq.props = Frontend;
SETCMD(DTV_ENUM_DELSYS, 0);
int Result = ioctl(fd_frontend, FE_GET_PROPERTY, &CmdSeq);
if (Result == 0) {
for (uint i = 0; i < Frontend[0].u.buffer.len; i++) {
if (numDeliverySystems >= MAXDELIVERYSYSTEMS) {
esyslog("ERROR: too many delivery systems on frontend %d/%d", adapter, frontend);
break;
}
deliverySystems[numDeliverySystems++] = Frontend[0].u.buffer.data[i];
}
LegacyMode = false;
}
else {
esyslog("ERROR: can't query delivery systems on frontend %d/%d - falling back to legacy mode", adapter, frontend);
}
}
if (LegacyMode) {
// Legacy mode (DVB-API < 5.5):
switch (frontendInfo.type) {
case FE_QPSK: deliverySystems[numDeliverySystems++] = SYS_DVBS;

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: dvbdevice.h 2.29 2013/03/07 09:42:29 kls Exp $
* $Id: dvbdevice.h 2.29.1.1 2013/04/09 13:43:33 kls Exp $
*/
#ifndef __DVBDEVICE_H
@ -14,10 +14,59 @@
#include <linux/dvb/version.h>
#include "device.h"
#if (DVB_API_VERSION << 8 | DVB_API_VERSION_MINOR) < 0x0503
#error VDR requires Linux DVB driver API version 5.3 or higher!
#define DVBAPIVERSION (DVB_API_VERSION << 8 | DVB_API_VERSION_MINOR)
#if DVBAPIVERSION < 0x0500
#error VDR requires Linux DVB driver API version 5.0 or higher!
#endif
// --- Definitions for older DVB API versions --------------------------------
#if DVBAPIVERSION < 0x0501
enum {
FE_CAN_2G_MODULATION = 0x10000000,
};
enum {
TRANSMISSION_MODE_4K = TRANSMISSION_MODE_AUTO + 1,
};
#endif
#if DVBAPIVERSION < 0x0502
enum {
FE_CAN_TURBO_FEC = 0x8000000,
};
#endif
#if DVBAPIVERSION < 0x0503
enum {
TRANSMISSION_MODE_1K = TRANSMISSION_MODE_4K + 1,
TRANSMISSION_MODE_16K,
TRANSMISSION_MODE_32K,
};
enum {
GUARD_INTERVAL_1_128 = GUARD_INTERVAL_AUTO + 1,
GUARD_INTERVAL_19_128,
GUARD_INTERVAL_19_256,
};
enum {
SYS_DVBT2 = SYS_DAB + 1,
};
#endif
#if DVBAPIVERSION < 0x0505
#define DTV_ENUM_DELSYS 44
#endif
#if DVBAPIVERSION < 0x0508
enum {
FE_CAN_MULTISTREAM = 0x4000000,
};
#define DTV_STREAM_ID 42
#define DTV_DVBT2_PLP_ID_LEGACY 43
#endif
// --- End of definitions for older DVB API versions -------------------------
#define MAXDVBDEVICES 8
#define MAXDELIVERYSYSTEMS 8

4
eit.c
View File

@ -8,7 +8,7 @@
* Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>.
* Adapted to 'libsi' for VDR 1.3.0 by Marcel Wiesweg <marcel.wiesweg@gmx.de>.
*
* $Id: eit.c 2.23 2012/12/04 11:10:10 kls Exp $
* $Id: eit.c 2.23.1.1 2013/10/12 11:24:51 kls Exp $
*/
#include "eit.h"
@ -404,7 +404,7 @@ void cEitFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
}
break;
case 0x14: {
if (Setup.SetSystemTime && Setup.TimeTransponder && ISTRANSPONDER(Transponder(), Setup.TimeTransponder))
if (Setup.SetSystemTime && Setup.TimeSource == Source() && Setup.TimeTransponder && ISTRANSPONDER(Transponder(), Setup.TimeTransponder))
cTDT TDT(Data);
}
break;

19
epg.c
View File

@ -7,7 +7,7 @@
* Original version (as used in VDR before 1.3.0) written by
* Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>.
*
* $Id: epg.c 2.23 2013/02/17 14:12:07 kls Exp $
* $Id: epg.c 2.23.1.1 2013/09/01 09:16:53 kls Exp $
*/
#include "epg.h"
@ -1140,16 +1140,19 @@ bool cSchedule::Read(FILE *f, cSchedules *Schedules)
class cEpgDataWriter : public cThread {
private:
cMutex mutex;
bool dump;
protected:
virtual void Action(void);
public:
cEpgDataWriter(void);
void SetDump(bool Dump) { dump = Dump; }
void Perform(void);
};
cEpgDataWriter::cEpgDataWriter(void)
:cThread("epg data writer", true)
{
dump = false;
}
void cEpgDataWriter::Action(void)
@ -1169,7 +1172,8 @@ void cEpgDataWriter::Perform(void)
p->Cleanup(now);
}
}
cSchedules::Dump();
if (dump)
cSchedules::Dump();
}
static cEpgDataWriter EpgDataWriter;
@ -1203,6 +1207,7 @@ void cSchedules::SetEpgDataFileName(const char *FileName)
{
free(epgDataFileName);
epgDataFileName = FileName ? strdup(FileName) : NULL;
EpgDataWriter.SetDump(epgDataFileName != NULL);
}
void cSchedules::SetModified(cSchedule *Schedule)
@ -1217,12 +1222,10 @@ void cSchedules::Cleanup(bool Force)
lastDump = 0;
time_t now = time(NULL);
if (now - lastDump > EPGDATAWRITEDELTA) {
if (epgDataFileName) {
if (Force)
EpgDataWriter.Perform();
else if (!EpgDataWriter.Active())
EpgDataWriter.Start();
}
if (Force)
EpgDataWriter.Perform();
else if (!EpgDataWriter.Active())
EpgDataWriter.Start();
lastDump = now;
}
}

7
font.c
View File

@ -6,7 +6,7 @@
*
* BiDi support by Osama Alrawab <alrawab@hotmail.com> @2008 Tripoli-Libya.
*
* $Id: font.c 2.13 2012/06/02 13:38:28 kls Exp $
* $Id: font.c 2.13.1.1 2013/04/07 14:54:15 kls Exp $
*/
#include "font.h"
@ -592,7 +592,7 @@ void cTextWrapper::Set(const char *Text, const cFont *Font, int Width)
p = Blank;
continue;
}
else {
else if (w > 0) { // there has to be at least one character before the newline
// Here's the ugly part, where we don't have any whitespace to
// punch in a newline, so we need to make room for it:
if (Delim)
@ -608,8 +608,7 @@ void cTextWrapper::Set(const char *Text, const cFont *Font, int Width)
continue;
}
}
else
w += cw;
w += cw;
if (strchr("-.,:;!?_", *p)) {
Delim = p;
Blank = NULL;

3
lirc.c
View File

@ -6,7 +6,7 @@
*
* LIRC support added by Carsten Koch <Carsten.Koch@icem.de> 2000-06-16.
*
* $Id: lirc.c 2.5 2013/02/11 15:25:42 kls Exp $
* $Id: lirc.c 2.5.1.1 2013/08/22 09:36:49 kls Exp $
*/
#include "lirc.h"
@ -111,6 +111,7 @@ void cLircRemote::Action(void)
else if (LastTime.Elapsed() < (uint)Setup.RcRepeatDelta)
continue; // skip same keys coming in too fast
else {
pressed = true;
repeat = true;
timeout = Delta * 10 / 9;
}

28
menu.c
View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: menu.c 2.82 2013/03/18 09:11:48 kls Exp $
* $Id: menu.c 2.82.1.5 2013/10/16 09:46:24 kls Exp $
*/
#include "menu.h"
@ -2302,14 +2302,12 @@ void cMenuRecordings::Set(bool Refresh)
}
else
delete Item;
if (LastItem) {
if (LastItem || LastDir) {
if (CurrentRecording && strcmp(CurrentRecording, recording->FileName()) == 0)
SetCurrent(LastItem);
SetCurrent(LastDir ? LastDir : LastItem);
}
if (LastDir) {
if (LastDir)
LastDir->IncrementCounter(recording->IsNew());
LastItem = LastDir;
}
}
}
if (Refresh)
@ -3366,7 +3364,7 @@ cMenuPluginItem::cMenuPluginItem(const char *Name, int Index)
cOsdObject *cMenuMain::pluginOsdObject = NULL;
cMenuMain::cMenuMain(eOSState State)
cMenuMain::cMenuMain(eOSState State, bool OpenSubMenus)
:cOsdMenu("")
{
SetMenuCategory(mcMain);
@ -3383,7 +3381,7 @@ cMenuMain::cMenuMain(eOSState State)
case osSchedule: AddSubMenu(new cMenuSchedule); break;
case osChannels: AddSubMenu(new cMenuChannels); break;
case osTimers: AddSubMenu(new cMenuTimers); break;
case osRecordings: AddSubMenu(new cMenuRecordings(NULL, 0, true)); break;
case osRecordings: AddSubMenu(new cMenuRecordings(NULL, 0, OpenSubMenus)); break;
case osSetup: AddSubMenu(new cMenuSetup); break;
case osCommands: AddSubMenu(new cMenuCommands(tr("Commands"), &Commands)); break;
default: break;
@ -3450,7 +3448,7 @@ bool cMenuMain::Update(bool Force)
stopReplayItem = NULL;
}
// Color buttons:
SetHelp(!replaying ? tr("Button$Record") : NULL, tr("Button$Audio"), replaying ? NULL : tr("Button$Pause"), replaying ? tr("Button$Stop") : cReplayControl::LastReplayed() ? tr("Button$Resume") : tr("Button$Play"));
SetHelp(!replaying ? tr("Button$Record") : NULL, tr("Button$Audio"), replaying || !Setup.PauseKeyHandling ? NULL : tr("Button$Pause"), replaying ? tr("Button$Stop") : cReplayControl::LastReplayed() ? tr("Button$Resume") : tr("Button$Play"));
result = true;
}
@ -3545,7 +3543,7 @@ eOSState cMenuMain::ProcessKey(eKeys Key)
}
break;
case kYellow: if (!HadSubMenu)
state = replaying ? osContinue : osPause;
state = replaying || !Setup.PauseKeyHandling ? osContinue : osPause;
break;
case kBlue: if (!HadSubMenu)
state = replaying ? osStopReplay : cReplayControl::LastReplayed() ? osReplay : osRecordings;
@ -4779,8 +4777,10 @@ void cReplayControl::MarkToggle(void)
marks.Add(Current);
bool Play, Forward;
int Speed;
if (Setup.PauseOnMarkSet || GetReplayMode(Play, Forward, Speed) && !Play)
if (Setup.PauseOnMarkSet || GetReplayMode(Play, Forward, Speed) && !Play) {
Goto(Current, true);
displayFrames = true;
}
}
ShowTimed(2);
marksModified = true;
@ -4968,10 +4968,8 @@ eOSState cReplayControl::ProcessKey(eKeys Key)
else
Show();
break;
case kBack: if (Setup.DelTimeshiftRec) {
cRecordControl* rc = cRecordControls::GetRecordControl(fileName);
return rc && rc->InstantId() ? osEnd : osRecordings;
}
case kBack: Hide();
Stop();
return osRecordings;
default: return osUnknown;
}

4
menu.h
View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: menu.h 2.13 2012/12/07 13:44:13 kls Exp $
* $Id: menu.h 2.13.1.1 2013/10/16 09:46:15 kls Exp $
*/
#ifndef __MENU_H
@ -107,7 +107,7 @@ private:
void Set(void);
bool Update(bool Force = false);
public:
cMenuMain(eOSState State = osUnknown);
cMenuMain(eOSState State = osUnknown, bool OpenSubMenus = false);
virtual eOSState ProcessKey(eKeys Key);
static cOsdObject *PluginOsdObject(void);
};

View File

@ -12,7 +12,7 @@
# See the main source file 'vdr.c' for copyright information and
# how to reach the author.
#
# $Id: newplugin 2.17 2013/01/12 13:46:00 kls Exp $
# $Id: newplugin 2.17.1.1 2013/05/02 10:04:06 kls Exp $
$PLUGIN_NAME = $ARGV[0] || die "Usage: newplugin <name>\n";
@ -352,8 +352,8 @@ The next steps you should perform now are:
sub CreateFile
{
my ($Name, $Content) = @_;
open(FILE, ">$PLUGINDIR/$Name") || die "$Name: $!\n";
my ($FileName, $Content) = @_;
open(FILE, ">$PLUGINDIR/$FileName") || die "$FileName: $!\n";
print FILE $Content;
close(FILE);
}

10
osd.c
View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: osd.c 2.38 2013/02/14 15:50:19 kls Exp $
* $Id: osd.c 2.38.1.1 2013/05/18 12:41:48 kls Exp $
*/
#include "osd.h"
@ -639,8 +639,8 @@ void cBitmap::DrawEllipse(int x1, int y1, int x2, int y2, tColor Color, int Quad
case 8: cy = y1; rx /= 2; break;
default: ;
}
int TwoASquare = 2 * rx * rx;
int TwoBSquare = 2 * ry * ry;
int TwoASquare = max(1, 2 * rx * rx);
int TwoBSquare = max(1, 2 * ry * ry);
int x = rx;
int y = 0;
int XChange = ry * ry * (1 - 2 * rx);
@ -1380,8 +1380,8 @@ void cPixmapMemory::DrawEllipse(const cRect &Rect, tColor Color, int Quadrants)
case 8: cy = y1; rx /= 2; break;
default: ;
}
int TwoASquare = 2 * rx * rx;
int TwoBSquare = 2 * ry * ry;
int TwoASquare = max(1, 2 * rx * rx);
int TwoBSquare = max(1, 2 * ry * ry);
int x = rx;
int y = 0;
int XChange = ry * ry * (1 - 2 * rx);

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: recorder.c 2.17 2012/09/22 11:53:57 kls Exp $
* $Id: recorder.c 2.17.1.1 2013/10/12 12:10:05 kls Exp $
*/
#include "recorder.h"
@ -14,7 +14,7 @@
// The maximum time we wait before assuming that a recorded video data stream
// is broken:
#define MAXBROKENTIMEOUT 30 // seconds
#define MAXBROKENTIMEOUT 30000 // milliseconds
#define MINFREEDISKSPACE (512) // MB
#define DISKCHECKINTERVAL 100 // seconds
@ -117,7 +117,7 @@ void cRecorder::Receive(uchar *Data, int Length)
void cRecorder::Action(void)
{
time_t t = time(NULL);
cTimeMs t(MAXBROKENTIMEOUT);
bool InfoWritten = false;
bool FirstIframeSeen = false;
while (Running()) {
@ -160,16 +160,16 @@ void cRecorder::Action(void)
break;
}
fileSize += Count;
t = time(NULL);
t.Set(MAXBROKENTIMEOUT);
}
}
ringBuffer->Del(Count);
}
}
if (time(NULL) - t > MAXBROKENTIMEOUT) {
if (t.TimedOut()) {
esyslog("ERROR: video data stream broken");
ShutdownHandler.RequestEmergencyExit();
t = time(NULL);
t.Set(MAXBROKENTIMEOUT);
}
}
}

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: recording.c 2.91 2013/03/11 10:34:41 kls Exp $
* $Id: recording.c 2.91.1.2 2013/08/21 13:58:35 kls Exp $
*/
#include "recording.h"
@ -178,34 +178,38 @@ void AssertFreeDiskSpace(int Priority, bool Force)
return; // the next call will actually remove it
}
// No "deleted" files to remove, so let's see if we can delete a recording:
isyslog("...no deleted recording found, trying to delete an old recording...");
cThreadLock RecordingsLock(&Recordings);
if (Recordings.Count()) {
cRecording *r = Recordings.First();
cRecording *r0 = NULL;
while (r) {
if (r->IsOnVideoDirectoryFileSystem()) { // only delete recordings that will actually increase the free video disk space
if (!r->IsEdited() && r->Lifetime() < MAXLIFETIME) { // edited recordings and recordings with MAXLIFETIME live forever
if ((r->Lifetime() == 0 && Priority > r->Priority()) || // the recording has no guaranteed lifetime and the new recording has higher priority
(r->Lifetime() > 0 && (time(NULL) - r->Start()) / SECSINDAY >= r->Lifetime())) { // the recording's guaranteed lifetime has expired
if (r0) {
if (r->Priority() < r0->Priority() || (r->Priority() == r0->Priority() && r->Start() < r0->Start()))
r0 = r; // in any case we delete the one with the lowest priority (or the older one in case of equal priorities)
if (Priority > 0) {
isyslog("...no deleted recording found, trying to delete an old recording...");
cThreadLock RecordingsLock(&Recordings);
if (Recordings.Count()) {
cRecording *r = Recordings.First();
cRecording *r0 = NULL;
while (r) {
if (r->IsOnVideoDirectoryFileSystem()) { // only delete recordings that will actually increase the free video disk space
if (!r->IsEdited() && r->Lifetime() < MAXLIFETIME) { // edited recordings and recordings with MAXLIFETIME live forever
if ((r->Lifetime() == 0 && Priority > r->Priority()) || // the recording has no guaranteed lifetime and the new recording has higher priority
(r->Lifetime() > 0 && (time(NULL) - r->Start()) / SECSINDAY >= r->Lifetime())) { // the recording's guaranteed lifetime has expired
if (r0) {
if (r->Priority() < r0->Priority() || (r->Priority() == r0->Priority() && r->Start() < r0->Start()))
r0 = r; // in any case we delete the one with the lowest priority (or the older one in case of equal priorities)
}
else
r0 = r;
}
else
r0 = r;
}
}
r = Recordings.Next(r);
}
r = Recordings.Next(r);
if (r0 && r0->Delete()) {
Recordings.Del(r0);
return;
}
if (r0 && r0->Delete()) {
Recordings.Del(r0);
return;
}
// Unable to free disk space, but there's nothing we can do about that...
isyslog("...no old recording found, giving up");
}
// Unable to free disk space, but there's nothing we can do about that...
isyslog("...no old recording found, giving up");
else
isyslog("...no deleted recording found, priority %d too low to trigger deleting an old recording", Priority);
Skins.QueueMessage(mtWarning, tr("Low disk space!"), 5, -1);
}
LastFreeDiskCheck = time(NULL);
@ -561,6 +565,7 @@ char *ExchangeChars(char *s, bool ToFileSystem)
// characters that can be mapped to other characters:
case ' ': *p = '_'; break;
case FOLDERDELIMCHAR: *p = '/'; break;
case '/': *p = FOLDERDELIMCHAR; break;
// characters that have to be encoded:
default:
if (NeedsConversion(p)) {
@ -583,6 +588,7 @@ char *ExchangeChars(char *s, bool ToFileSystem)
switch (*p) {
// mapped characters:
case '_': *p = ' '; break;
case FOLDERDELIMCHAR: *p = '/'; break;
case '/': *p = FOLDERDELIMCHAR; break;
// encoded characters:
case '#': {

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: skinlcars.c 2.21 2013/03/09 10:43:34 kls Exp $
* $Id: skinlcars.c 2.21.1.1 2013/05/19 12:08:52 kls Exp $
*/
// "Star Trek: The Next Generation"(R) is a registered trademark of Paramount Pictures,
@ -1340,6 +1340,8 @@ void cSkinLCARSDisplayMenu::DrawLive(const cChannel *Channel)
DrawMainFrameUpper(Theme.Color(clrChannelFrameBg));
osd->DrawText(xd00, yd00, tr("LIVE"), Theme.Color(clrChannelFrameBg), Theme.Color(clrBackground), tallFont, xd07 - xd00, yd01 - yd00, taTop | taRight | taBorder);
}
if (!Channel)
return;
if (initial || Channel != lastChannel) {
osd->DrawText(xa00, yt00, itoa(Channel->Number()), Theme.Color(clrChannelFrameFg), Theme.Color(clrChannelFrameBg), tallFont, xa02 - xa00, yt02 - yt00, taTop | taRight | taBorder);
osd->DrawText(xa03, yt00, Channel->Name(), Theme.Color(clrChannelName), Theme.Color(clrBackground), tallFont, xd00 - xa03, yd01 - yd00, taTop | taLeft);

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: thread.c 2.7 2013/02/22 14:52:49 kls Exp $
* $Id: thread.c 2.7.1.1 2013/04/11 08:59:26 kls Exp $
*/
#include "thread.h"
@ -229,7 +229,7 @@ void cThread::SetPriority(int Priority)
void cThread::SetIOPriority(int Priority)
{
if (syscall(SYS_ioprio_set, 1, 0, (Priority & 0xff) | (2 << 13)) < 0) // best effort class
if (syscall(SYS_ioprio_set, 1, 0, (Priority & 0xff) | (3 << 13)) < 0) // idle class
LOG_ERROR;
}

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: transfer.c 2.8 2013/03/01 09:50:15 kls Exp $
* $Id: transfer.c 2.8.1.1 2013/08/22 12:37:02 kls Exp $
*/
#include "transfer.h"
@ -35,7 +35,7 @@ void cTransfer::Activate(bool On)
cPlayer::Detach();
}
#define MAXRETRIES 5 // max. number of retries for a single TS packet
#define MAXRETRIES 20 // max. number of retries for a single TS packet
#define RETRYWAIT 5 // time (in ms) between two retries
void cTransfer::Receive(uchar *Data, int Length)

4
vdr.c
View File

@ -22,7 +22,7 @@
*
* The project's page is at http://www.tvdr.de
*
* $Id: vdr.c 2.57 2013/03/15 10:44:54 kls Exp $
* $Id: vdr.c 2.57.1.1 2013/10/16 09:46:36 kls Exp $
*/
#include <getopt.h>
@ -1234,7 +1234,7 @@ int main(int argc, char *argv[])
case osRecordings:
DELETE_MENU;
cControl::Shutdown();
Menu = new cMenuMain(osRecordings);
Menu = new cMenuMain(osRecordings, true);
break;
case osReplay: DELETE_MENU;
cControl::Shutdown();