Skip to content

Commit b68de41

Browse files
committed
Imported Upstream version 2.3.1
1 parent cef9386 commit b68de41

File tree

245 files changed

+6334
-12505
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

245 files changed

+6334
-12505
lines changed

CONTRIBUTORS

+28
Original file line numberDiff line numberDiff line change
@@ -714,6 +714,7 @@ Oliver Endriss <[email protected]>
714714
to detect the frame type
715715
for suggesting to ignore channels with an RID that is not 0 when checking for obsolete
716716
channels
717+
for fixing a possible stack overflow in cListBase::Sort()
717718

718719
Reinhard Walter Buchner <[email protected]>
719720
for adding some satellites to 'sources.conf'
@@ -2842,6 +2843,7 @@ Derek Kelly <[email protected]>
28422843
for reporting a missing template for DVBDIR in Make.config.template
28432844
for suggesting to add ARGSDIR to the ONEDIR section of Make.config.template
28442845
for suggesting to change the naming of "binary skip mode" to "adaptive skip mode"
2846+
for suggesting to make the -u option also accept a numerical user id
28452847

28462848
Marcel Unbehaun <[email protected]>
28472849
for adding cRecordingInfo::GetEvent()
@@ -2964,6 +2966,7 @@ Christopher Reimer <[email protected]>
29642966
for reporting a possible crash in the OSD demo
29652967
for adding support for systemd
29662968
for suggesting to replace VDR_CHARSET_OVERRIDE with a command line option
2969+
for making the recorder skip empty adaptation field TS packets
29672970

29682971
Stefan Huskamp <[email protected]>
29692972
for suggesting to make entering characters via the number keys
@@ -3003,6 +3006,8 @@ Frank Neumann <[email protected]>
30033006
for reporting a problem with tuning timeouts when using SCR with multiple tuners
30043007
for fixing the German translation of "VDR will shut down in %s minutes"
30053008
for adding support for "Satellite Channel Routing" (SCR) according to EN50607 ("JESS")
3009+
for suggesting to make the Setup/CAM menu display which device an individual CAM
3010+
is currently assigned to
30063011

30073012
Gerald Dachs <[email protected]>
30083013
for reporting a problem with checking for minimum line length of 21 characters in
@@ -3262,6 +3267,7 @@ Stefan Braun <[email protected]>
32623267
for suggesting to add the menu category mcRecordingEdit for marking menus that edit
32633268
recording properties
32643269
for suggesting to make cRecording::GetResume() public
3270+
for implementing the possibility for skins to display horizontal menus
32653271

32663272
Jochen Dolze <[email protected]>
32673273
for changing cThread::SetIOPriority() from "best effort class" to "idle class" in order
@@ -3311,6 +3317,11 @@ Thomas Reufer <[email protected]>
33113317
skipping"
33123318
for suggesting to change the return value of cOsd::RenderPixmaps() from cPixmapMemory
33133319
to cPixmap
3320+
for adding detection of 24fps
3321+
for suggesting to add some comment to cPixmap about the relation between OSD,
3322+
ViewPort and DrawPort
3323+
for suggesting to reduce the priority of the "video directory scanner" thread
3324+
for making the 'newplugin' script create the 'po' subdirectory for translations
33143325

33153326
Eike Sauer <[email protected]>
33163327
for reporting a problem with channels that need more than 5 TS packets for detecting
@@ -3345,6 +3356,9 @@ Dietmar Spingler <[email protected]>
33453356
for reporting a problem that led to a fix with EMM pids not being properly reset for
33463357
CAMs that need to receive the TS
33473358
for suggesting to add the channel name to log messages that reference a channel
3359+
for suggesting to provide a way of using no DVB devices at all
3360+
for suggesting that the -V and -h options should list the plugins in alphabetical order
3361+
for suggesting to implement the setup option "Recording/Record key handling"
33483362

33493363
Stefan Schallenberg <[email protected]>
33503364
for adding the functions IndexOf(), InsertUnique(), AppendUnique() and RemoveElement()
@@ -3359,6 +3373,8 @@ Dieter Ferdinand <[email protected]>
33593373
case replay was paused
33603374
for reporting a problem with the system getting unresponsive when removing a huge
33613375
number of files in the thread that removes deleted recordings
3376+
for suggesting to call the script that gets called for recordings also right before a
3377+
recording is edited
33623378

33633379
Jasmin Jessich <[email protected]>
33643380
for modifying the CAM API so that it is possible to implement CAMs that can be freely
@@ -3400,3 +3416,15 @@ Tomasz Maciej Nowak <[email protected]>
34003416

34013417
Gabriel Bonich <[email protected]>
34023418
for translating OSD texts to the Spanish language
3419+
3420+
Daniel Ribeiro <[email protected]>
3421+
for reporting a problem with setting the source value of newly created channels, in
3422+
case the NIT is received from a different, but very close satellite position, and
3423+
for helping to debug this
3424+
3425+
Janne P�nk�l� <[email protected]>
3426+
for reporting that some broadcasters use the character 0x0D in EPG texts
3427+
3428+
Stefan P�schel <[email protected]>
3429+
for coding the AFFcleaner, parts of which were used to make the recorder skip empty
3430+
adaptation field TS packets

Doxyfile.filter

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
# See the main source file 'vdr.c' for copyright information and
1010
# how to reach the author.
1111
#
12-
# $Id: Doxyfile.filter 3.0 2013/02/17 10:54:05 kls Exp $
12+
# $Id: Doxyfile.filter 4.0 2013/02/17 10:54:05 kls Exp $
1313

1414
$TAG = "///<";
1515

HISTORY

+232
Original file line numberDiff line numberDiff line change
@@ -8595,3 +8595,235 @@ Video Disk Recorder Revision History
85958595
- Fixed leading/trailing/multiple blanks in the translation files.
85968596
- Bumped all version numbers to 2.2.0.
85978597
- Official release.
8598+
8599+
2015-09-14: Version 2.3.1
8600+
8601+
- The new function cOsd::MaxPixmapSize() can be called to determine the maximum size
8602+
a cPixmap may have on the current OSD. The 'osddemo' example has been modified
8603+
accordingly. Plugin authors may want to use this function in case they use pixmaps
8604+
that are larger than the full OSD size. The default implementation sets this limit
8605+
to 2048x2048 pixel.
8606+
- The Setup/CAM menu now displays which device an individual CAM is currently
8607+
assigned to (suggested by Frank Neumann).
8608+
- Added detection of 24fps (thanks to Thomas Reufer).
8609+
- Added a note about the VDR User Counter and VDR's facebook page to the README file.
8610+
- The dvbhddevice plugin is no longer part of the VDR source archive.
8611+
You can get the latest version of this plugin from the author's repository at
8612+
https://bitbucket.org/powARman/dvbhddevice.
8613+
- The dvbsddevice and rcu plugins are no longer part of the VDR source archive.
8614+
You can get the latest versions of these plugins from ftp://ftp.tvdr.de/vdr/Plugins.
8615+
- Added a section about Output Devices to the INSTALL file.
8616+
- Fixed setting the source value of newly created channels, in case the NIT is
8617+
received from a different, but very close satellite position (reported by Daniel
8618+
Ribeiro). The code for handling different NITs has been removed from nit.c, because
8619+
according to the DVB standard table id 0x40 carries only the NIT of the actual
8620+
network.
8621+
- Added some comment to cPixmap about the relation between OSD, ViewPort and DrawPort
8622+
(suggested by Thomas Reufer).
8623+
- Improved syncing on sections when parsing the NIT and SDT.
8624+
- Fixed scaling subtitles (their areas could sometimes extend outside the actual OSD).
8625+
- Reduced the priority of the "video directory scanner" thread (suggested by Thomas
8626+
Reufer) and checking cIoThrottle::Engaged() when it is running.
8627+
- The script that gets called for recordings is now also called right before a
8628+
recording is edited, with the first parameter being "editing" (suggested by
8629+
Dieter Ferdinand).
8630+
- The new setup option "OSD/Default sort mode for recordings" can be used to define
8631+
how recordings shall be sorted by default (either by time or by name, with "by time"
8632+
being the default). If a particular sort mode has been selected for a folder by
8633+
pressing '0', the default no longer applies to that folder. Repeating timers no
8634+
longer write a ".sort" file into a recordings folder to have the recordings sorted
8635+
by time.
8636+
- The command line option -D now accepts the value '-' (as in -D-), which prevents
8637+
VDR from using any DVB devices (suggested by Dietmar Spingler).
8638+
- The -V and -h options now list the plugins in alphabetical order (suggested by
8639+
Dietmar Spingler).
8640+
- Fixed a compiler warning in font.c.
8641+
- Commented out the line
8642+
#define DEPRECATED_VIDEOSYSTEM
8643+
in device.h. If a plugin doesn't compile with this version of VDR, you can uncomment
8644+
this line as a quick workaround. In the long run the plugin will need to be adapted.
8645+
- The function cOsd::GetBitmap() is now 'protected'. If a plugin doesn't compile with
8646+
this version of VDR, you can uncomment the line
8647+
//#define DEPRECATED_GETBITMAP
8648+
in osd.h as a quick workaround. In the long run the plugin will need to be adapted.
8649+
- The -u option now also accepts a numerical user id (suggested by Derek Kelly).
8650+
- The SVDRP port now accepts multiple concurrent connections. You can now keep an
8651+
SVDRP connection open as long as you wish, without preventing others from
8652+
connecting. Note, though, that SVDRP connections still get closed automatically
8653+
if there has been no activity for 300 seconds (configurable via
8654+
"Setup/Miscellaneous/SVDRP timeout (s)").
8655+
- The SVDRP log messages have been unified and now always contain the IP and port
8656+
number of the remote host.
8657+
- SVDRP connections are now handled in a separate "SVDRP server handler" thread,
8658+
which makes them more responsive. Note that there is only one thread that handles
8659+
all concurrent SVDRP connections. That way each SVDRP command is guaranteed to be
8660+
processed separately, without interfering with any other SVDRP commands that might
8661+
be issued at the same time. Plugins that implement SVDRP commands may need to take
8662+
care of proper locking if the commands access global data.
8663+
- VDR now sends out a broadcast to port 6419/udp, which was assigned to 'svdrp-disc'
8664+
by the IANA. VDRs listening on that port will automatically initiate an SVDRP
8665+
connection to the broadcasting VDR, and in turn send out a broadcast to make
8666+
other VDRs connect to them. That way all VDRs within the local network will
8667+
have permanent "peer-to-peer" SVDRP connections between each other. The
8668+
configuration in the svdrphosts.conf file is taken into account when considering
8669+
whether or not to respond to an SVDRP discover broadcast.
8670+
- The new SVDRP command PING is used by automatically established peer-to-peer
8671+
connections to keep them alive.
8672+
- The new function GetSVDRPServerNames() can be used to get a list of all VDRs
8673+
this VDR is connected to via SVDRP.
8674+
- The new function ExecSVDRPCommand() can be used to execute an SVDRP command on
8675+
one of the servers this VDR is connected to, and retrieve the result.
8676+
The helper functions SVDRPCode() and SVDRPValue() can be used to easily access
8677+
the codes and values returned by ExecSVDRPCommand().
8678+
- The cTimer class now has a new member named 'remote', which holds the name of the
8679+
remote server this timer will record on. If this is NULL, it is a local timer.
8680+
- Timers from other VDRs that are connected to this VDR via SVDRP are now
8681+
automatically fetched and stored in the global Timers list. In order for this
8682+
to work, all of the channels used by timers on the remote VDR must also be
8683+
defined on the local VDR (however, not necessarily in the same sequence).
8684+
Automatic channel syncing will be implemented later.
8685+
- The main menu of the LCARS skin now displays a small rectangle on the left side
8686+
of a timer if this is a remote timer. The color of that rectangle changes if
8687+
the timer is currently recording on the remote VDR.
8688+
- Accessing the global Timers list now has to be protected by proper locking,
8689+
because SVDRP commands are now executed in a separate thread.
8690+
The introduction of this locking mechanism required the following changes:
8691+
+ The new classes cStateLock and cStateKey are used to implement locking
8692+
with quick detection of state changes.
8693+
+ cConfig::cConfig() now has a parameter that indicates whether this list
8694+
requires locking.
8695+
+ The global lists of Timers, Channels, Schedules and Recordings are no longer
8696+
static variables. They are now pointers that need to be retrieved through
8697+
a call to cTimers::GetTimersRead/Write(), cChannels::GetChannelsRead/Write(),
8698+
cSchedules::GetSchedulesRead/Write() and cRecordings::GetRecordingsRead/Write(),
8699+
respectively.
8700+
+ References from/to link channels are now removed in cChannels::Del() rather
8701+
than cChannel::~cChannel(), to make sure the caller holds a proper lock.
8702+
+ cChannel::HasTimer() has been removed. This information is now retrieved
8703+
via cSchedule::HasTimer().
8704+
+ Several member functions of cChannel, cTimer, cMarks and cRecording have
8705+
been made 'const', and some of them are now available as both 'const' and
8706+
'non-const' versions.
8707+
+ The cChannel::Set...() functions are now 'bool' and return true if they have
8708+
actually changed any of the channels's members.
8709+
+ cChannels::SetModified() has been renamed to cChannels::SetModifiedByUser().
8710+
+ cChannels::Modified() has been renamed to cChannels::ModifiedByUser(), and
8711+
now has a 'State' parameter that allows the caller to see whether a channel
8712+
has been modified since the last call to this function with the same State
8713+
variable.
8714+
+ The macros CHANNELSMOD_NONE/_AUTO/_USER have been removed.
8715+
+ cMarks now requires locking via cStateKey.
8716+
+ cSortedTimers now requires a pointer to the list of timers.
8717+
+ cEvent::HasTimer() no longer scans the list of timers to check whether an event
8718+
is referenced by a timer, but rather keeps score of how many timers reference
8719+
it. This was necessary in order to avoid having to lock the list of timers from
8720+
within a cEvent.
8721+
+ The new class cListGarbageCollector is used to temporary store any objects deleted
8722+
from cLists that require locking. This allows pointers to such objects to be
8723+
dereferenced even if the objects are no longer part of the list.
8724+
+ cListBase::Contains() can be used to check whether a particular object is still
8725+
contained in that list.
8726+
+ Outdated events are no longer "phased out", but rather deleted right away and thus
8727+
taken care of by the new "garbage collector" of the list.
8728+
+ Deleted cRecording objects are no longer kept in a list of "vanished" recordings,
8729+
but are rather taken care of by the new "garbage collector" of the list.
8730+
+ cSchedules::ClearAll() has been removed. The functionality is now implemented
8731+
directly in cSVDRPServer::CmdCLRE().
8732+
+ tEventID has been changed to u_int16_t in order to make room for the new member
8733+
numTimers in cEvent.
8734+
+ cSchedule now has a member Modified(), which can be used with a State variable
8735+
to quickly determine whether this schedule has been modified since the last call
8736+
to this function with the same State variable.
8737+
+ cSchedulesLock has been removed. Locking the list of schedules is now done via
8738+
the cList's new locking mechanism.
8739+
+ The 'OnlyRunningStatus' parameters in cEpgHandler::BeginSegmentTransfer() and
8740+
cEpgHandler::EndSegmentTransfer() are now obsolete. They are still present in
8741+
the interface for backward compatibility, but may be removed in a future version.
8742+
Their value is always 'false'.
8743+
+ The constant tcMod is no longer used in cStatus::TimerChange(). The definition is
8744+
still there for backward compatibility.
8745+
Plugins that access the global lists of Timers, Channels, Recordings or Schedules
8746+
will need to be adapted as follows:
8747+
+ Instead of directly accessing the global variables Timers, Channels or Recordings,
8748+
they need to set up a cStateKey variable and call the proper getter function,
8749+
as in
8750+
cStateKey StateKey;
8751+
if (const cTimers *Timers = cTimers::GetTimersRead(StateKey)) {
8752+
// access the timers
8753+
StateKey.Remove();
8754+
}
8755+
and
8756+
cStateKey StateKey;
8757+
if (cTimers *Timers = cTimers::GetTimersWrite(StateKey)) {
8758+
// access the timers
8759+
StateKey.Remove();
8760+
}
8761+
See timers.h, thread.h and tools.h for details on this new locking mechanism.
8762+
+ There are convenience macros for easily accessing these lists without having
8763+
to explicitly set up a cStateKey and calling its Remove() function. These macros
8764+
have the form LOCK_*_READ/WRITE (with '*' being TIMERS, CHANNELS, SCHEDULES or
8765+
RECORDINGS). Simply put such a macro before the point where you need to access
8766+
the respective list, and there will be a pointer named Timers, Channels, Schedules
8767+
or Recordings, respectively, which is valid until the end of the current block.
8768+
+ If a plugin needs to access several of the global lists in parallel, locking must
8769+
always be done in the sequence Timers, Channels, Recordings, Schedules. This is
8770+
necessary to make sure that different threads that need to lock several lists at
8771+
the same time don't end up in a deadlock.
8772+
+ Some pointer variables may need to be made 'const'. The compiler will tell you
8773+
about these.
8774+
- cSectionSyncer has been improved to better handle missed sections.
8775+
- Added a missing initialization of 'seen' in cChannel's copy constructor.
8776+
- Background modifications of channels, timers and events are now displayed immediately
8777+
in the corresponding menus.
8778+
- cEIT now checks the version of the tables before doing any processing, which saves
8779+
a lot of locking and processing.
8780+
- If a timer is newly created with the Red button in the Schedule menu, and the timer
8781+
is presented to the user in the "Edit timer" menu because it will start immediately,
8782+
it now *must* be confirmed with "Ok" to set the timer. Otherwise the timer will not
8783+
be created.
8784+
- Recordings and deleted recordings are now scanned in a single thread.
8785+
- The new SVDRP command POLL is used by automatically established peer-to-peer
8786+
connections to trigger fetching remote timers.
8787+
- You can now set DumpSVDRPDataTransfer in svdrp.c to true to have all SVDRP
8788+
communication printed to the console for debugging.
8789+
- Added a missing 'const' to cReceiver::Receive(), to protect the given Data from
8790+
being modified.
8791+
- The SVDRP commands that deal with timers (DELT, LSTT, MODT, NEWT, NEXT and UPDT)
8792+
as well as any log messages that refer to timers, now use a unique id for each
8793+
timer, which remains valid as long as this instance of VDR is running. This means
8794+
that timers are no longer continuously numbered from 1 to N in LSTT. There may be
8795+
gaps in the sequence, in case timers have been deleted.
8796+
- The Timers menu now displays the name of the remote VDR in front of the timer's
8797+
file name, if this is a remote timer.
8798+
- The new options "Setup/Miscellaneous/SVDRP peering", ".../SVDRP host name" and
8799+
".../SVDRP default host" can be used to configure automatic peering between VDRs
8800+
in the same network. Peering is disabled by default and can be enabled by setting
8801+
"SVDRP peering" to "yes".
8802+
- The function cTimer::ToText() no longer returns a newline character at the end of
8803+
the string. The newline is now added by the caller as necessary. This was changed
8804+
because cTimer::ToText() is now also needed in a context where the terminating
8805+
newline can't be used. Consequently, cChannel::ToText() and cMark::ToText() have
8806+
been modified accordingly.
8807+
- All timer related response strings from SVDRP commands now use the channel ID
8808+
instead of channel numbers.
8809+
- The "Edit timer" menu now has a new parameter "Record on", which can be used to
8810+
select the VDR on which this timer shall record. Timers can be freely moved
8811+
between connected VDRs by simply selecting the desired machine in this field.
8812+
- The SVDRP command DELT no longer checks whether the timer that shall be deleted
8813+
is currently recording.
8814+
- The character 0x0D is now stripped from EPG texts (reported by Janne P�nk�l�).
8815+
- The EPG scanner no longer moves the dish if there is a positioner.
8816+
- The 'newplugin' script now creates the 'po' subdirectory for translations (thanks
8817+
to Thomas Reufer).
8818+
- Skins can now implement cSkinDisplayMenu::MenuOrientation() to display horizontal
8819+
menus (thanks to Stefan Braun).
8820+
- Fixed a possible stack overflow in cListBase::Sort() (thanks to Oliver Endriss).
8821+
- Changed the description of the --chartab option in the INSTALL file to refer to
8822+
"DVB SI table strings" instead of "EPG data".
8823+
- The width and height of the OSD are now limited to the actual maximum dimensions
8824+
of the output device, taking into account the top and left offset.
8825+
- The new setup option "Recording/Record key handling" can be used to define
8826+
what happens if the Record key on the remote control is pressed during
8827+
live tv (suggested by Dietmar Spingler).
8828+
- Empty adaptation field TS packets are now skipped when recording (thanks to
8829+
Christopher Reimer, based on the "AFFcleaner" by Stefan P�schel).

0 commit comments

Comments
 (0)