Compare commits

...

6 Commits

9 changed files with 132 additions and 42 deletions

View File

@ -2832,6 +2832,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
@ -3135,3 +3137,11 @@ 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
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

14
HISTORY
View File

@ -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,16 @@ 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).

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.1 2013/04/05 10:41:32 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.1"
#define VDRVERSNUM 20001 // 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: device.c 2.74 2013/03/07 13:18:35 kls Exp $
* $Id: device.c 2.74.1.1 2013/04/05 10:47:38 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;

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.1 2013/04/09 13:42:26 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
@ -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

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;

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.1 2013/04/11 08:20:03 kls Exp $
*/
#include "recording.h"
@ -561,6 +561,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 +584,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: 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;
}