mirror of
https://github.com/vdr-projects/vdr.git
synced 2025-03-01 10:50:46 +00:00
Version 1.7.38
VDR developer version 1.7.38 is now available at ftp://ftp.tvdr.de/vdr/Developer/vdr-1.7.38.tar.bz2 A 'diff' against the previous version is available at ftp://ftp.tvdr.de/vdr/Developer/vdr-1.7.37-1.7.38.diff MD5 checksums: f4ef0f60ed662f3c983a830da67df9b2 vdr-1.7.38.tar.bz2 e945b0f44e13ed768de726cf6e66317c vdr-1.7.37-1.7.38.diff WARNING: ======== This is a developer version. Even though I use it in my productive environment. I strongly recommend that you only use it under controlled conditions and for testing and debugging. Approaching version 2.0.0: ========================== If all goes well, there should be no more functional or API changes before the final version 2.0.0. There will just be a few more fixes. From the HISTORY file: - Updated the Ukrainian OSD texts (thanks to Yarema Aka Knedlyk). - Updated the Estonian OSD texts (thanks to Arthur Konovalov). - Updated the Romanian OSD texts (thanks to Lucian Muresan). - Updated the French OSD texts (thanks to Marc Perrudin, Bernard Jaulini and Peter Münster). - Updated the Macedonian OSD texts (thanks to Dimitar Petrovski). - Fixed moving editing marks, so that they don't get overwritten with old values through an update of the marks file. - Removed an invalid line from channels.conf.terr (reported by Lars Hanisch). - Fixed an unexpected k_Repeat key event after a k_Release in lirc.c. - Fixed permissions of po/sr_SR.po (reported by Dominic Evans). - Updated the Italian OSD texts (thanks to Diego Pierotto). - Fixed using "Pause" and "Slow motion" near the end of a recording (replay stopped a few seconds after the end of the recording file has been reached). - 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 (reported by Andre Weidemann). - Fixed the description of the OSD drawing functions DrawEllipse() (the values -5...-8 for the Quadrants parameter are not implemented). - Made cOsd::DestroyPixmap() "NULL proof". - Now deleting any previously allocated pixmaps in cOsd::SetAreas(). - Added demos of the DrawEllipse() and DrawSlope() function to the 'osddemo' plugin (press '1' or '2', respectively). - Updated the Lithuanian OSD texts (thanks to Valdemaras Pipiras). - The timeout for trying to switch to a valid programme is now reset immediately once a programme has been found. - No longer checking for EOPNOTSUPP in cDvbTuner::GetSignalQuality() to avoid breaking this function in case the driver suddenly decides to return a different errno value if an operation is not supported. - Moved the definition of TIMERMACRO_TITLE and TIMERMACRO_EPISODE from recording.h to config.h and using them to initialize Setup.NameInstantRecord (avoids having the same information in two places). - Fixed the return value of cOsdProvider::StoreImage() in case there is no OSD provider. - Fixed a crash in cMenuEditChanItem::Set() when entering a channel number that doesn't exist (reported by Mikael Hübsch). - Fixed displaying pending timers in "alert" mode in the LCARS skin. - Added missing $(LDFLAGS) to the Makefile of the dvbhddevice plugin (thanks to Ville Skyttä). - Fixed some spellings in PLUGINS.html and Doxyfile (thanks to Ville Skyttä). - Added '-p' to the cp command in the install-conf target of the Makefile (thanks to Ville Skyttä). - Added missing 'const' to cDevice::HasProgramme() and cDevice::HasLock(). - Fixed determining the priority of the primary device in case it is neither replaying nor receiving a live channel (thanks to Matthias Senzel for reporting a problem with switching back to live viewing after replay in a setup with device bonding). - Removed all \return and \param tags from comment lines marked with "///<" for Doxygen. There was only a rather small number of these, and I would probably always forget to put them in place when writing future comments, so I decided to drop them entirely. - Added Doxyfile.filter to have special characters escaped that would otherwise be dropped by Doxygen (reported by Ville Skyttä). - Using 'cat' instead of 'cp' to copy the Doxyfile to avoid problems in case Doxyfile is write protected. - Updated the Doxyfile with a newer version of Doxygen. - Turned off following symlinks in the Doxyfile. - Removed trailing whitespace. - Expanded tabs in PLUGINS/src/dvbhddevice/setup.c. - Some formatting fixes.
This commit is contained in:
parent
14bd32b948
commit
4c59501a6b
25
CONTRIBUTORS
25
CONTRIBUTORS
@ -1996,6 +1996,11 @@ Ville Skytt
|
||||
for fixing cConfig::Load() for g++ version 4.7.0
|
||||
for fixing some typos in HISTORY and CONTRIBUTORS
|
||||
for fixing some spellings in osd.h and svdrp.c
|
||||
for adding missing $(LDFLAGS) to the Makefile of the dvbhddevice plugin
|
||||
for fixing some spellings in PLUGINS.html and Doxyfile
|
||||
for adding '-p' to the cp command in the install-conf target of the Makefile
|
||||
for reporting that some special characters are dropped by Doxygen and thus need to
|
||||
be escaped
|
||||
|
||||
Steffen Beyer <cpunk@reactor.de>
|
||||
for fixing setting the colored button help after deleting a recording in case the next
|
||||
@ -2248,6 +2253,9 @@ Andr
|
||||
1.7.32 no longer generates a mark at that point
|
||||
for suggesting to automatically go into Pause mode if an editing mark is set during
|
||||
replay
|
||||
for reporting a bug in 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
|
||||
|
||||
Jürgen Schilling <juergen_schilling@web.de>
|
||||
for reporting that color buttons were displayed in the recording info menu if it
|
||||
@ -2801,6 +2809,7 @@ Lars Hanisch <dvb@flensrocker.de>
|
||||
for reporting that the SVDRP command UPDR didn't update the global recordings list
|
||||
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
|
||||
|
||||
Alex Lasnier <alex@fepg.org>
|
||||
for adding tuning support for ATSC devices
|
||||
@ -2935,6 +2944,7 @@ Dominic Evans <oldmanuk@gmail.com>
|
||||
for adding cap_net_raw to the capabilities that are not dropped
|
||||
for suggesting to make the channel name column in the "What's on now/next" menu
|
||||
adjust its width to display the full short name of each channel
|
||||
for reporting wrong permissions of po/sr_SR.po
|
||||
|
||||
Torsten Lang <info@torstenlang.de>
|
||||
for reporting a problem with newline characters in stream component descriptions
|
||||
@ -3032,6 +3042,7 @@ S
|
||||
|
||||
Peter Münster <pmlists@free.fr>
|
||||
for fixing 'make install' to not overwrite existing configuration files
|
||||
for translating OSD texts to the French language
|
||||
|
||||
Mike Hay <mike.hay@linenshorts.com>
|
||||
for reporting a problem with handling the case of the polarization character in
|
||||
@ -3057,3 +3068,17 @@ Stefan Stolz <st.stolz@gmail.com>
|
||||
Malte Forkel <malte.forkel@berlin.de>
|
||||
for suggesting to make the SVDRP command NEWT no longer check whether a timer with the
|
||||
given data already exists
|
||||
|
||||
Marc Perrudin <vdr@ekass.net>
|
||||
for translating OSD texts to the French language
|
||||
|
||||
Bernard Jaulin <bernard.jaulin@gmail.com>
|
||||
for translating OSD texts to the French language
|
||||
|
||||
Mikael Hübsch <mikael.hubsch@gmail.com>
|
||||
for reporting a crash in cMenuEditChanItem::Set() when entering a channel number that
|
||||
doesn't exist
|
||||
|
||||
Matthias Senzel <matthias.senzel@t-online.de>
|
||||
for reporting a problem with switching back to live viewing after replay in a setup
|
||||
with device bonding
|
||||
|
34
Doxyfile.filter
Executable file
34
Doxyfile.filter
Executable file
@ -0,0 +1,34 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
# Filter source files for use with Doxygen.
|
||||
#
|
||||
# Escapes special characters in comments marked with "///<".
|
||||
#
|
||||
# Usage: Doxyfile.filter filename
|
||||
#
|
||||
# See the main source file 'vdr.c' for copyright information and
|
||||
# how to reach the author.
|
||||
#
|
||||
# $Id: Doxyfile.filter 2.1 2013/02/17 10:54:05 kls Exp $
|
||||
|
||||
$TAG = "///<";
|
||||
|
||||
while (<>) {
|
||||
$t = $_;
|
||||
$p = index($t, $TAG);
|
||||
if ($p >= 0) {
|
||||
$p += length($TAG);
|
||||
print substr($t, 0, $p);
|
||||
$quote = 0;
|
||||
while (1) {
|
||||
$s = substr($t, $p++, 1);
|
||||
last if ($s eq "");
|
||||
$quote ^= 1 if ($s eq '"');
|
||||
print "\\" if (!$quote && $s =~ /[\\\@<>]/);
|
||||
print $s;
|
||||
}
|
||||
}
|
||||
else {
|
||||
print $t;
|
||||
}
|
||||
}
|
62
HISTORY
62
HISTORY
@ -7567,7 +7567,7 @@ Video Disk Recorder Revision History
|
||||
behavior of the remote control in case a key is held pressed down for a while, so
|
||||
that the repeat function kicks in (see MANUAL).
|
||||
The builtin LIRC and KBD remote controls already use these parameters. It is
|
||||
recommended that plugins that implement an interface to any kind of remote controls
|
||||
recommended that plugins that implement an interface to any kind of remote controls
|
||||
also use the parameters Setup.RcRepeatDelay and Setup.RcRepeatDelta for the desired
|
||||
purpose, and remove any setup options they might have that serve the same purpose.
|
||||
- cTimer no longer does any special "VFAT" handling to shorten directory names to 40
|
||||
@ -7584,3 +7584,63 @@ Video Disk Recorder Revision History
|
||||
as few pixmaps as possible.
|
||||
- Fixed formatting and removed some superfluous break statements in vdr.c's command
|
||||
line option switch.
|
||||
|
||||
2013-02-17: Version 1.7.38
|
||||
|
||||
- Updated the Ukrainian OSD texts (thanks to Yarema Aka Knedlyk).
|
||||
- Updated the Estonian OSD texts (thanks to Arthur Konovalov).
|
||||
- Updated the Romanian OSD texts (thanks to Lucian Muresan).
|
||||
- Updated the French OSD texts (thanks to Marc Perrudin, Bernard Jaulini and Peter
|
||||
Münster).
|
||||
- Updated the Macedonian OSD texts (thanks to Dimitar Petrovski).
|
||||
- Fixed moving editing marks, so that they don't get overwritten with old values
|
||||
through an update of the marks file.
|
||||
- Removed an invalid line from channels.conf.terr (reported by Lars Hanisch).
|
||||
- Fixed an unexpected k_Repeat key event after a k_Release in lirc.c.
|
||||
- Fixed permissions of po/sr_SR.po (reported by Dominic Evans).
|
||||
- Updated the Italian OSD texts (thanks to Diego Pierotto).
|
||||
- Fixed using "Pause" and "Slow motion" near the end of a recording (replay stopped
|
||||
a few seconds after the end of the recording file has been reached).
|
||||
- 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 (reported by Andre Weidemann).
|
||||
- Fixed the description of the OSD drawing functions DrawEllipse() (the values -5...-8
|
||||
for the Quadrants parameter are not implemented).
|
||||
- Made cOsd::DestroyPixmap() "NULL proof".
|
||||
- Now deleting any previously allocated pixmaps in cOsd::SetAreas().
|
||||
- Added demos of the DrawEllipse() and DrawSlope() function to the 'osddemo'
|
||||
plugin (press '1' or '2', respectively).
|
||||
- Updated the Lithuanian OSD texts (thanks to Valdemaras Pipiras).
|
||||
- The timeout for trying to switch to a valid programme is now reset immediately once
|
||||
a programme has been found.
|
||||
- No longer checking for EOPNOTSUPP in cDvbTuner::GetSignalQuality() to avoid breaking
|
||||
this function in case the driver suddenly decides to return a different errno value
|
||||
if an operation is not supported.
|
||||
- Moved the definition of TIMERMACRO_TITLE and TIMERMACRO_EPISODE from recording.h to
|
||||
config.h and using them to initialize Setup.NameInstantRecord (avoids having the same
|
||||
information in two places).
|
||||
- Fixed the return value of cOsdProvider::StoreImage() in case there is no OSD provider.
|
||||
- Fixed a crash in cMenuEditChanItem::Set() when entering a channel number that
|
||||
doesn't exist (reported by Mikael Hübsch).
|
||||
- Fixed displaying pending timers in "alert" mode in the LCARS skin.
|
||||
- Added missing $(LDFLAGS) to the Makefile of the dvbhddevice plugin (thanks to Ville
|
||||
Skyttä).
|
||||
- Fixed some spellings in PLUGINS.html and Doxyfile (thanks to Ville Skyttä).
|
||||
- Added '-p' to the cp command in the install-conf target of the Makefile (thanks to
|
||||
Ville Skyttä).
|
||||
- Added missing 'const' to cDevice::HasProgramme() and cDevice::HasLock().
|
||||
- Fixed determining the priority of the primary device in case it is neither replaying
|
||||
nor receiving a live channel (thanks to Matthias Senzel for reporting a problem with
|
||||
switching back to live viewing after replay in a setup with device bonding).
|
||||
- Removed all \return and \param tags from comment lines marked with "///<" for Doxygen.
|
||||
There was only a rather small number of these, and I would probably always forget to
|
||||
put them in place when writing future comments, so I decided to drop them entirely.
|
||||
- Added Doxyfile.filter to have special characters escaped that would otherwise be
|
||||
dropped by Doxygen (reported by Ville Skyttä).
|
||||
- Using 'cat' instead of 'cp' to copy the Doxyfile to avoid problems in case Doxyfile
|
||||
is write protected.
|
||||
- Updated the Doxyfile with a newer version of Doxygen.
|
||||
- Turned off following symlinks in the Doxyfile.
|
||||
- Removed trailing whitespace.
|
||||
- Expanded tabs in PLUGINS/src/dvbhddevice/setup.c.
|
||||
- Some formatting fixes.
|
||||
|
2
MANUAL
2
MANUAL
@ -699,7 +699,7 @@ Version 1.6
|
||||
Defines the standard compliance mode:
|
||||
0 = DVB
|
||||
1 = ANSI/SCTE
|
||||
|
||||
|
||||
Video format = 4:3 The video format (or aspect ratio) of the tv set in use
|
||||
(4:3 or 16:9).
|
||||
|
||||
|
6
Makefile
6
Makefile
@ -4,7 +4,7 @@
|
||||
# See the main source file 'vdr.c' for copyright information and
|
||||
# how to reach the author.
|
||||
#
|
||||
# $Id: Makefile 2.50 2013/01/27 14:19:49 kls Exp $
|
||||
# $Id: Makefile 2.52 2013/02/17 11:08:04 kls Exp $
|
||||
|
||||
.DELETE_ON_ERROR:
|
||||
|
||||
@ -264,7 +264,7 @@ install-dirs:
|
||||
@mkdir -p $(DESTDIR)$(RESDIR)
|
||||
|
||||
install-conf:
|
||||
@cp -n *.conf $(DESTDIR)$(CONFDIR)
|
||||
@cp -pn *.conf $(DESTDIR)$(CONFDIR)
|
||||
|
||||
# Documentation:
|
||||
|
||||
@ -303,7 +303,7 @@ install-pc: vdr.pc
|
||||
# Source documentation:
|
||||
|
||||
srcdoc:
|
||||
@cp $(DOXYFILE) $(DOXYFILE).tmp
|
||||
@cat $(DOXYFILE) > $(DOXYFILE).tmp
|
||||
@echo PROJECT_NUMBER = $(VDRVERSION) >> $(DOXYFILE).tmp
|
||||
$(DOXYGEN) $(DOXYFILE).tmp
|
||||
@rm $(DOXYFILE).tmp
|
||||
|
@ -575,7 +575,7 @@ If the plugin should print log messages, you can use <tt>dsyslog()</tt>, <tt>isy
|
||||
<li><tt>esyslog()</tt> prints the log message only if the log level of vdr is set to 1 or above.
|
||||
</ul>
|
||||
The output of this log is the syslog of the system vdr is running on.
|
||||
The logmessage can be formatted like <tt>printf()</tt>, as in
|
||||
The log message can be formatted like <tt>printf()</tt>, as in
|
||||
|
||||
<p><table><tr><td class="code"><pre>
|
||||
esyslog("pluginname: error #%d has occurred", ErrorNumber);
|
||||
@ -918,7 +918,7 @@ original values that are stored elsewhere.
|
||||
</modified>
|
||||
<p>
|
||||
<modified>
|
||||
Threfore VDR provides the functions
|
||||
Therefore VDR provides the functions
|
||||
|
||||
<p><table><tr><td class="code"><pre>
|
||||
<modified>
|
||||
@ -939,7 +939,7 @@ call to <tt>ConfigDirectory()</tt> will automatically make sure that the <tt>plu
|
||||
subdirectory will exist. If, for some reason, this cannot be achieved, <tt>NULL</tt>
|
||||
will be returned.
|
||||
<modified>
|
||||
The behavoir of <tt>CacheDirectory()</tt> and <tt>ResourceDirectory()</tt> is similar.
|
||||
The behavior of <tt>CacheDirectory()</tt> and <tt>ResourceDirectory()</tt> is similar.
|
||||
</modified>
|
||||
<p>
|
||||
The additional <tt>plugins</tt> directory is used to keep files from plugins apart
|
||||
@ -2025,7 +2025,7 @@ operator!
|
||||
VDR has builtin facilities that select which device is able to provide a given
|
||||
transponder. However, there may be situations where the setup is so special
|
||||
that it requires considerations that exceed the scope of the core VDR code.
|
||||
This is where <i>device hooks</i> can be used.
|
||||
This is where <i>device hooks</i> can be used.
|
||||
|
||||
<p><table><tr><td class="code"><pre>
|
||||
class cMyDeviceHook : public cDeviceHook {
|
||||
|
@ -55,3 +55,7 @@ VDR Plugin 'dvbhddevice' Revision History
|
||||
2013-01-24: Version 0.0.7
|
||||
|
||||
- Fixed cHdffOsd::SetAreas() (didn't clear the OSD).
|
||||
|
||||
2013-02-16: Version 0.0.8
|
||||
|
||||
- Added missing $(LDFLAGS) to the Makefile (thanks to Ville Skyttä).
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# Makefile for a Video Disk Recorder plugin
|
||||
#
|
||||
# $Id: Makefile 1.22 2013/01/12 13:45:01 kls Exp $
|
||||
# $Id: Makefile 1.23 2013/02/16 10:34:53 kls Exp $
|
||||
|
||||
# The official name of this plugin.
|
||||
# This name will be used in the '-P...' option of VDR to load the plugin.
|
||||
@ -103,7 +103,7 @@ install-i18n: $(I18Nmsgs)
|
||||
|
||||
$(SOFILE): $(OBJS) libhdffcmd
|
||||
@$(MAKE) --no-print-directory -C libhdffcmd all
|
||||
$(CXX) $(CXXFLAGS) -shared $(OBJS) libhdffcmd/libhdffcmd.a -o $@
|
||||
$(CXX) $(CXXFLAGS) $(LDFLAGS) -shared $(OBJS) libhdffcmd/libhdffcmd.a -o $@
|
||||
|
||||
install-lib: $(SOFILE)
|
||||
install -D $^ $(DESTDIR)$(LIBDIR)/$^.$(APIVERSION)
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* See the README file for copyright information and how to reach the author.
|
||||
*
|
||||
* $Id: dvbhddevice.c 1.21 2013/01/29 08:59:36 kls Exp $
|
||||
* $Id: dvbhddevice.c 1.22 2013/02/16 10:35:42 kls Exp $
|
||||
*/
|
||||
|
||||
#include <vdr/plugin.h>
|
||||
@ -12,7 +12,7 @@
|
||||
#include "menu.h"
|
||||
#include "setup.h"
|
||||
|
||||
static const char *VERSION = "0.0.7";
|
||||
static const char *VERSION = "0.0.8";
|
||||
static const char *DESCRIPTION = trNOOP("HD Full Featured DVB device");
|
||||
static const char *MAINMENUENTRY = "dvbhddevice";
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* See the README file for copyright information and how to reach the author.
|
||||
*
|
||||
* $Id: dvbhdffdevice.c 1.48 2013/01/29 08:59:36 kls Exp $
|
||||
* $Id: dvbhdffdevice.c 1.49 2013/02/17 14:10:06 kls Exp $
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
@ -27,7 +27,7 @@
|
||||
static uchar *YuvToJpeg(uchar *Mem, int Width, int Height, int &Size, int Quality);
|
||||
|
||||
|
||||
// --- cDvbHdFfDevice ----------------------------------------------------------
|
||||
// --- cDvbHdFfDevice --------------------------------------------------------
|
||||
|
||||
int cDvbHdFfDevice::devHdffOffset = -1;
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* See the README file for copyright information and how to reach the author.
|
||||
*
|
||||
* $Id: setup.c 1.18 2012/11/15 09:20:50 kls Exp $
|
||||
* $Id: setup.c 1.19 2013/02/17 13:25:17 kls Exp $
|
||||
*/
|
||||
|
||||
#include "setup.h"
|
||||
@ -436,26 +436,26 @@ void cHdffSetupPage::Store(void)
|
||||
|
||||
eOSState cHdffSetupPage::ProcessKey(eKeys key)
|
||||
{
|
||||
eOSState state = cMenuSetupPage::ProcessKey(key);
|
||||
eOSState state = cMenuSetupPage::ProcessKey(key);
|
||||
|
||||
if (state == osContinue)
|
||||
{
|
||||
cOsdItem * item;
|
||||
switch (key)
|
||||
{
|
||||
case kLeft:
|
||||
case kRight:
|
||||
item = Get(Current());
|
||||
if (item == mTvFormatItem)
|
||||
{
|
||||
mVideoConversion = 0;
|
||||
BuildVideoConversionItem();
|
||||
Display();
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
return state;
|
||||
if (state == osContinue)
|
||||
{
|
||||
cOsdItem * item;
|
||||
switch (key)
|
||||
{
|
||||
case kLeft:
|
||||
case kRight:
|
||||
item = Get(Current());
|
||||
if (item == mTvFormatItem)
|
||||
{
|
||||
mVideoConversion = 0;
|
||||
BuildVideoConversionItem();
|
||||
Display();
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
return state;
|
||||
}
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* See the README file for copyright information and how to reach the author.
|
||||
*
|
||||
* $Id: dvbsdffdevice.c 2.34 2013/01/25 10:48:29 kls Exp $
|
||||
* $Id: dvbsdffdevice.c 2.35 2013/02/17 13:16:18 kls Exp $
|
||||
*/
|
||||
|
||||
#include "dvbsdffdevice.h"
|
||||
@ -795,5 +795,5 @@ bool cDvbSdFfDeviceProbe::Probe(int Adapter, int Frontend)
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
return false;
|
||||
}
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* See the README file for copyright information and how to reach the author.
|
||||
*
|
||||
* $Id: dvbsdffdevice.h 2.15 2013/01/25 10:43:14 kls Exp $
|
||||
* $Id: dvbsdffdevice.h 2.16 2013/02/17 13:16:29 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef __DVBSDFFDEVICE_H
|
||||
@ -112,5 +112,5 @@ public:
|
||||
void SetOutputOnly(bool On) { outputOnly = On; }
|
||||
virtual bool Probe(int Adapter, int Frontend);
|
||||
};
|
||||
|
||||
|
||||
#endif //__DVBSDFFDEVICE_H
|
||||
|
@ -46,3 +46,8 @@ VDR Plugin 'osddemo' Revision History
|
||||
2013-01-12: Version 0.2.5
|
||||
|
||||
- Adapted Makefile to changes introduced in recent VDR versions.
|
||||
|
||||
2013-02-13: Version 0.3.0
|
||||
|
||||
- Added demos of the DrawEllipse() and DrawSlope() function (press '1' or '2',
|
||||
respectively).
|
||||
|
@ -26,4 +26,9 @@ pixmap is displayed, it can be moved around with the Up, Down, Left
|
||||
and Right buttons. The Red button turns off the "Tiled Pixmaps"
|
||||
display, and the Green button toggles the color display.
|
||||
|
||||
In both variants of the demo, pressing the '1' key displays all
|
||||
possible ellipses that can be drawn with the DrawEllipse() function,
|
||||
while pressing the '2' key shows all possible slopes the DrawSlope()
|
||||
function can draw.
|
||||
|
||||
Press Ok to close the window.
|
||||
|
@ -3,16 +3,93 @@
|
||||
*
|
||||
* See the README file for copyright information and how to reach the author.
|
||||
*
|
||||
* $Id: osddemo.c 2.8 2013/01/12 14:12:23 kls Exp $
|
||||
* $Id: osddemo.c 2.10 2013/02/17 13:16:34 kls Exp $
|
||||
*/
|
||||
|
||||
#include <vdr/osd.h>
|
||||
#include <vdr/plugin.h>
|
||||
|
||||
static const char *VERSION = "0.2.5";
|
||||
static const char *VERSION = "0.3.0";
|
||||
static const char *DESCRIPTION = "Demo of arbitrary OSD setup";
|
||||
static const char *MAINMENUENTRY = "Osd Demo";
|
||||
|
||||
// --- DrawEllipses ----------------------------------------------------------
|
||||
|
||||
void DrawEllipse(cOsd *Osd, int x1, int y1, int x2, int y2, int Quadrants)
|
||||
{
|
||||
Osd->DrawRectangle(x1 + 2, y1 + 2, x2 - 2, y2 - 2, clrGreen);
|
||||
Osd->DrawEllipse(x1 + 3, y1 + 3, x2 - 3, y2 - 3, clrRed, Quadrants);
|
||||
}
|
||||
|
||||
void DrawEllipses(cOsd *Osd)
|
||||
{
|
||||
int xa = 0;
|
||||
int ya = 0;
|
||||
int xb = Osd->Width() - 1;
|
||||
int yb = Osd->Height() - 1;
|
||||
int x0 = xa;
|
||||
int x5 = xb;
|
||||
int x1 = x0 + (xb - xa) / 5;
|
||||
int x2 = x0 + (xb - xa) * 2 / 5;
|
||||
int x3 = x0 + (xb - xa) * 3 / 5;
|
||||
int x4 = x0 + (xb - xa) * 4 / 5;
|
||||
int y0 = ya;
|
||||
int y4 = yb;
|
||||
int y2 = (y0 + y4) / 2;
|
||||
int y1 = (y0 + y2) / 2;
|
||||
int y3 = (y2 + y4) / 2;
|
||||
Osd->DrawRectangle(xa, ya, xb, yb, clrGray50);
|
||||
DrawEllipse(Osd, x4, y0, x5, y4, 0);
|
||||
DrawEllipse(Osd, x2, y1, x3, y2, 1);
|
||||
DrawEllipse(Osd, x1, y1, x2, y2, 2);
|
||||
DrawEllipse(Osd, x1, y2, x2, y3, 3);
|
||||
DrawEllipse(Osd, x2, y2, x3, y3, 4);
|
||||
DrawEllipse(Osd, x3, y1, x4, y3, 5);
|
||||
DrawEllipse(Osd, x1, y0, x3, y1, 6);
|
||||
DrawEllipse(Osd, x0, y1, x1, y3, 7);
|
||||
DrawEllipse(Osd, x1, y3, x3, y4, 8);
|
||||
DrawEllipse(Osd, x3, y0, x4, y1, -1);
|
||||
DrawEllipse(Osd, x0, y0, x1, y1, -2);
|
||||
DrawEllipse(Osd, x0, y3, x1, y4, -3);
|
||||
DrawEllipse(Osd, x3, y3, x4, y4, -4);
|
||||
Osd->Flush();
|
||||
}
|
||||
|
||||
// --- DrawSlopes ------------------------------------------------------------
|
||||
|
||||
void DrawSlope(cOsd *Osd, int x1, int y1, int x2, int y2, int Type)
|
||||
{
|
||||
Osd->DrawRectangle(x1 + 2, y1 + 2, x2 - 2, y2 - 2, clrGreen);
|
||||
Osd->DrawSlope(x1 + 3, y1 + 3, x2 - 3, y2 - 3, clrRed, Type);
|
||||
}
|
||||
|
||||
void DrawSlopes(cOsd *Osd)
|
||||
{
|
||||
int xa = 0;
|
||||
int ya = 0;
|
||||
int xb = Osd->Width() - 1;
|
||||
int yb = Osd->Height() - 1;
|
||||
int x0 = xa;
|
||||
int x4 = xb;
|
||||
int x2 = (x0 + x4) / 2;
|
||||
int x1 = (x0 + x2) / 2;
|
||||
int x3 = (x2 + x4) / 2;
|
||||
int y0 = ya;
|
||||
int y3 = yb;
|
||||
int y2 = (y0 + y3) / 2;
|
||||
int y1 = (y0 + y2) / 2;
|
||||
Osd->DrawRectangle(xa, ya, xb, yb, clrGray50);
|
||||
DrawSlope(Osd, x0, y0, x2, y1, 0);
|
||||
DrawSlope(Osd, x2, y0, x4, y1, 1);
|
||||
DrawSlope(Osd, x0, y1, x2, y2, 2);
|
||||
DrawSlope(Osd, x2, y1, x4, y2, 3);
|
||||
DrawSlope(Osd, x0, y2, x1, y3, 4);
|
||||
DrawSlope(Osd, x1, y2, x2, y3, 5);
|
||||
DrawSlope(Osd, x2, y2, x3, y3, 6);
|
||||
DrawSlope(Osd, x3, y2, x4, y3, 7);
|
||||
Osd->Flush();
|
||||
}
|
||||
|
||||
// --- cLineGame -------------------------------------------------------------
|
||||
|
||||
class cLineGame : public cOsdObject {
|
||||
@ -31,7 +108,7 @@ public:
|
||||
cLineGame::cLineGame(void)
|
||||
{
|
||||
osd = NULL;
|
||||
x = y = 50;
|
||||
x = y = 0;
|
||||
color = clrRed;
|
||||
}
|
||||
|
||||
@ -42,12 +119,23 @@ cLineGame::~cLineGame()
|
||||
|
||||
void cLineGame::Show(void)
|
||||
{
|
||||
osd = cOsdProvider::NewOsd(100, 50, 50);
|
||||
osd = cOsdProvider::NewOsd(cOsd::OsdLeft(), cOsd::OsdTop(), 50);
|
||||
if (osd) {
|
||||
tArea Area = { 0, 0, 99, 199, 4 };
|
||||
osd->SetAreas(&Area, 1);
|
||||
osd->DrawRectangle(0, 0, 99, 199, clrGray50);
|
||||
osd->Flush();
|
||||
int x1 = cOsd::OsdWidth() - 1;
|
||||
int y1 = cOsd::OsdHeight() - 1;
|
||||
while (x1 > 0 && y1 > 0) {
|
||||
tArea Area = { 0, 0, x1, y1, 4 };
|
||||
if (osd->CanHandleAreas(&Area, 1) == oeOk) {
|
||||
osd->SetAreas(&Area, 1);
|
||||
osd->DrawRectangle(0, 0, osd->Width() - 1, osd->Height() - 1, clrGray50);
|
||||
osd->Flush();
|
||||
x = osd->Width() / 2;
|
||||
y = osd->Height() / 2;
|
||||
break;
|
||||
}
|
||||
x1 = x1 * 9 / 10;
|
||||
y1 = y1 * 9 / 10;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -55,19 +143,24 @@ eOSState cLineGame::ProcessKey(eKeys Key)
|
||||
{
|
||||
eOSState state = cOsdObject::ProcessKey(Key);
|
||||
if (state == osUnknown) {
|
||||
const int d = 4;
|
||||
switch (Key & ~k_Repeat) {
|
||||
case kUp: if (y > 0) y--; break;
|
||||
case kDown: if (y < 196) y++; break;
|
||||
case kLeft: if (x > 0) x--; break;
|
||||
case kRight: if (x < 96) x++; break;
|
||||
case kUp: y = max(0, y - d); break;
|
||||
case kDown: y = min(osd->Height() - d, y + d); break;
|
||||
case kLeft: x = max(0, x - d); break;
|
||||
case kRight: x = min(osd->Width() - d, x + d); break;
|
||||
case kRed: color = clrRed; break;
|
||||
case kGreen: color = clrGreen; break;
|
||||
case kYellow: color = clrYellow; break;
|
||||
case kBlue: color = clrBlue; break;
|
||||
case k1: DrawEllipses(osd);
|
||||
return osContinue;
|
||||
case k2: DrawSlopes(osd);
|
||||
return osContinue;
|
||||
case kOk: return osEnd;
|
||||
default: return state;
|
||||
}
|
||||
osd->DrawRectangle(x, y, x + 3, y + 3, color);
|
||||
osd->DrawRectangle(x, y, x + d - 1, y + d - 1, color);
|
||||
osd->Flush();
|
||||
state = osContinue;
|
||||
}
|
||||
@ -84,6 +177,7 @@ private:
|
||||
bool clockwise;
|
||||
cPixmap *destroyablePixmap;
|
||||
cPixmap *toggleablePixmap;
|
||||
bool SetArea(void);
|
||||
virtual void Action(void);
|
||||
cPixmap *CreateTextPixmap(const char *s, int Line, int Layer, tColor ColorFg, tColor ColorBg, const cFont *Font);
|
||||
public:
|
||||
@ -241,7 +335,7 @@ void cTrueColorDemo::Action(void)
|
||||
State++;
|
||||
}
|
||||
break;
|
||||
case 1: {
|
||||
case 1: {
|
||||
FadeInPixmap = CreateTextPixmap("Video Disk Recorder", Line, 3, clrYellow, clrTransparent, OsdFont);
|
||||
if (FadeInPixmap)
|
||||
Line += FadeInPixmap->DrawPort().Height();
|
||||
@ -390,13 +484,21 @@ void cTrueColorDemo::Action(void)
|
||||
delete LrgFont;
|
||||
}
|
||||
|
||||
bool cTrueColorDemo::SetArea(void)
|
||||
{
|
||||
if (osd) {
|
||||
tArea Area = { 0, 0, cOsd::OsdWidth() - 1, cOsd::OsdHeight() - 1, 32 };
|
||||
return osd->SetAreas(&Area, 1) == oeOk;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void cTrueColorDemo::Show(void)
|
||||
{
|
||||
osd = cOsdProvider::NewOsd(cOsd::OsdLeft(), cOsd::OsdTop(), 50);
|
||||
if (osd) {
|
||||
tArea Area = { 0, 0, cOsd::OsdWidth() - 1, cOsd::OsdHeight() - 1, 32 };
|
||||
if (osd->SetAreas(&Area, 1) == oeOk) {
|
||||
osd->DrawRectangle(0, 0, osd->Width() -1 , osd->Height() - 1, clrGray50);
|
||||
if (SetArea()) {
|
||||
osd->DrawRectangle(0, 0, osd->Width() - 1, osd->Height() - 1, clrGray50);
|
||||
osd->Flush();
|
||||
Start();
|
||||
}
|
||||
@ -423,6 +525,14 @@ eOSState cTrueColorDemo::ProcessKey(eKeys Key)
|
||||
case kGreen: if (toggleablePixmap)
|
||||
toggleablePixmap->SetLayer(-toggleablePixmap->Layer());
|
||||
break;
|
||||
case k1: Cancel(3);
|
||||
SetArea();
|
||||
DrawEllipses(osd);
|
||||
break;
|
||||
case k2: Cancel(3);
|
||||
SetArea();
|
||||
DrawSlopes(osd);
|
||||
break;
|
||||
case kOk: return osEnd;
|
||||
default: return state;
|
||||
}
|
||||
|
@ -7,7 +7,7 @@
|
||||
#
|
||||
# See the README file for copyright information and how to reach the author.
|
||||
#
|
||||
# $Id: pic2mpg 2.4 2012/01/08 13:27:17 kls Exp $
|
||||
# $Id: pic2mpg 2.5 2013/02/17 13:17:13 kls Exp $
|
||||
|
||||
use File::Path;
|
||||
use File::Spec;
|
||||
@ -37,9 +37,9 @@ $Verbose = $opt_v;
|
||||
$ListFiles = $Verbose >= 1;
|
||||
$Detailed = $Verbose >= 2;
|
||||
|
||||
# Supported picture types:
|
||||
# Supported picture types:
|
||||
|
||||
%PICTYPES = (
|
||||
%PICTYPES = (
|
||||
bmp => 1,
|
||||
gif => 1,
|
||||
jpeg => 1,
|
||||
@ -135,7 +135,7 @@ sub ConvertFile
|
||||
return if (!defined $PICTYPES{$Type});
|
||||
my $Exif = ImageInfo($Pict);
|
||||
my $Orientation = $$Exif{"Orientation"};
|
||||
my ($Degrees) = $Orientation =~ /Rotate ([0-9]+)/;
|
||||
my ($Degrees) = $Orientation =~ /Rotate ([0-9]+)/;
|
||||
my $Rotate = $Degrees ? "-rotate $Degrees" : "";
|
||||
print "orientation = '$Orientation' -> rotation = $Rotate\n" if ($Detailed);
|
||||
$Pict = EscapeMeta($Pict);
|
||||
|
@ -154,7 +154,7 @@ sub ConvertFile
|
||||
print "image size is $w x $h\n" if ($Detailed);
|
||||
my $Exif = ImageInfo($Pict);
|
||||
my $Orientation = $$Exif{"Orientation"};
|
||||
my ($Degrees) = $Orientation =~ /Rotate ([0-9]+) /;
|
||||
my ($Degrees) = $Orientation =~ /Rotate ([0-9]+) /;
|
||||
my $Rotate = "-null";
|
||||
$Rotate = "-cw" if $Degrees eq "90";
|
||||
$Rotate = "-ccw" if $Degrees eq "270";
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* See the README file for copyright information and how to reach the author.
|
||||
*
|
||||
* $Id: svccli.c 2.2 2013/01/12 14:13:00 kls Exp $
|
||||
* $Id: svccli.c 2.3 2013/02/17 14:10:26 kls Exp $
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
@ -32,7 +32,7 @@ struct AddService_v1_0 {
|
||||
int sum;
|
||||
};
|
||||
|
||||
// --- cPluginSvcCli ----------------------------------------------------------
|
||||
// --- cPluginSvcCli ---------------------------------------------------------
|
||||
|
||||
cOsdObject *cPluginSvcCli::MainMenuAction(void)
|
||||
{
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* See the README file for copyright information and how to reach the author.
|
||||
*
|
||||
* $Id: svcsvr.c 2.2 2013/01/12 14:13:05 kls Exp $
|
||||
* $Id: svcsvr.c 2.3 2013/02/17 14:10:38 kls Exp $
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
@ -29,7 +29,7 @@ struct AddService_v1_0 {
|
||||
int sum;
|
||||
};
|
||||
|
||||
// --- cPluginSvcSvr ----------------------------------------------------------
|
||||
// --- cPluginSvcSvr ---------------------------------------------------------
|
||||
|
||||
bool cPluginSvcSvr::Service(const char *Id, void *Data)
|
||||
{
|
||||
|
4
README
4
README
@ -36,5 +36,5 @@ the ones in this system, but here we have the full source code
|
||||
and can modify the menus in whatever way desired.
|
||||
|
||||
|
||||
"VDR Video Disk Recorder" is a registered trademark of Klaus Schmidinger.
|
||||
"TVDR TV Done Right" is a registered trademark of Klaus Schmidinger.
|
||||
"VDR Video Disk Recorder" is a registered trademark of Klaus Schmidinger.
|
||||
"TVDR TV Done Right" is a registered trademark of Klaus Schmidinger.
|
||||
|
475
UPDATE-2.0.0
Normal file
475
UPDATE-2.0.0
Normal file
@ -0,0 +1,475 @@
|
||||
This is a summary of the changes in VDR 2.0.0 since the last stable
|
||||
version 1.6.0. It only contains things that are of actual importance
|
||||
to the user and doesn't mention the many fixes and improvements that
|
||||
have been made "behind the scenes".
|
||||
|
||||
See the file HISTORY for a detailed list of all changes.
|
||||
|
||||
Satellite Channel Routing:
|
||||
|
||||
- VDR now supports "Satellite Channel Routing" (SCR) according to EN50494 (based on
|
||||
the "unicable" patch).
|
||||
Since "Unicable" is a registered trademark and stands for only one of many
|
||||
implementations of SCR, the following changes have been made compared to the patch,
|
||||
which need to be taken into account by people who have set up their system using
|
||||
the patch:
|
||||
- The 'U' parameter in the diseqc.conf file has been changed to 'S' ("Scr").
|
||||
- The configuration file name has been changed from "unicable.conf" to "scr.conf".
|
||||
|
||||
Device Bonding:
|
||||
|
||||
- The new setup options "LNB/Device n connected to sat cable" can be used to define
|
||||
which DVB-S devices are connected to the same sat cable and are therefore "bonded".
|
||||
This obsoletes the LNBSHARE patch. Users of the LNBSHARE patch will need to newly
|
||||
set up their sat devices with the above options.
|
||||
|
||||
Subtitles:
|
||||
|
||||
- Implemented handling of HD resolution subtitles according to v1.3.1 of
|
||||
ETSI EN 300 743, chapter 7.2.1.
|
||||
- Fixed handling DVB subtitles and implemented decoding textual DVB subtitles.
|
||||
|
||||
Plugins:
|
||||
|
||||
- Added cDevice::NumProvidedSystems() to PLUGINS.html (was missing since it had
|
||||
been implemented).
|
||||
- The 'sky' plugin is no longer part of the VDR source.
|
||||
- IMPORTANT NOTE TO PLUGIN AUTHORS: a plugin that implements a derived cDevice
|
||||
class that can replay video must now call the MakePrimaryDevice() function of
|
||||
its base class.
|
||||
- Implemented cDeviceHook to allow plugins more control over which device can
|
||||
provide which transponder.
|
||||
- Plugins can now define new sources. In order to implement this, the following
|
||||
changes were made:
|
||||
+ The transponder parameter string is no longer interpreted by cChannel, but rather
|
||||
stored as is and used only by the respective device. That way plugins can use a
|
||||
channel's parameter string to store arbitrary data (see vdr.5).
|
||||
+ The new class cSourceParam can be used by plugins to define new sources, and to
|
||||
implement OSD items that will be used in the channel editor for editing the source
|
||||
specific parameters of a channel (see dvbdevice.c for an example of how this is
|
||||
done for the default DVB devices).
|
||||
+ Purely numerical values are no longer accepted in the 'source' parameter of a
|
||||
channel.
|
||||
This obsoletes the PLUGINPARAM patch.
|
||||
- The dvbhddevice plugin is now part of the VDR distribution archive.
|
||||
- The pic2mpg script of the 'pictures' plugin now generates HD images.
|
||||
The old SD version is still available as pic2mpg-sd.
|
||||
- The dvbsddevice plugin now supports the new option --outputonly, which disables
|
||||
receiving on SD FF devices and uses the device only for output.
|
||||
- The code for the RCU remote control unit has been moved into a separate plugin
|
||||
named "rcu".
|
||||
The REMOTE=RCU option in the 'make' call for VDR is now obsolete.
|
||||
The command line option --rcu is now obsolete. Use -Prcu instead. If you have
|
||||
used --rcu with a device path, use -P"rcu -d<device>".
|
||||
- Removed the obsolete function cEITScanner::UsesDevice(). If a plugin has used this
|
||||
function to find out whether a call to its cStatus::ChannelSwitch() function was
|
||||
due to a live channel switch, it can use that function's new parameter LiveView.
|
||||
Any plugins that implement cStatus::ChannelSwitch() need to add the parameter
|
||||
'bool LiveView' to that function.
|
||||
- Added a new plugin interface for implementing EPG handlers.
|
||||
+ A plugin can implement an EPG handler by creating an object derived from
|
||||
cEpgHandler and implementing the necessary member functions.
|
||||
+ The special handling of events with table id 0x00 has been dropped.
|
||||
For backwards compatibility EPG events with table ids lower than 0x4E will
|
||||
be treated as if they had a table id of 0x4E, and the new plugin 'epgtableid0'
|
||||
can be used to have them handled like in previous versions.
|
||||
+ The default table id for a newly created cEvent has been changed to 0xFF,
|
||||
which is higher than any normal table id that is broadcast in the EIT data.
|
||||
See PLUGINS.html, section "Electronic Program Guide" for more information.
|
||||
- The cThread constructor now has an additional boolean parameter that can be set to
|
||||
true to have this thread run at a lower priority. Plugin authors that use low
|
||||
priority threads may want to use this instead of the calls to SetPriority(19) and
|
||||
SetIOPriority(7). The priority of a thread ("low" or "high") is now logged when the
|
||||
thread starts.
|
||||
- The plugin Makefiles now have a separate 'install' target.
|
||||
- Plugin Makefiles now use DESTDIR and the 'install' program.
|
||||
- Plugin Makefiles can now include a configuration file for compile time parameters.
|
||||
- Plugins that implement an interface to any kind of remote controls shall use the
|
||||
new parameters Setup.RcRepeatDelay and Setup.RcRepeatDelta to allow the user to
|
||||
adjust the behavior of the remote control's repeat function. They shall also
|
||||
remove any setup options they might have that serve the same purpose.
|
||||
- Added demos of the DrawEllipse() and DrawSlope() function to the 'osddemo'
|
||||
plugin (press '1' or '2', respectively).
|
||||
|
||||
Skins:
|
||||
|
||||
- The 'sttng' skin now displays two colored bars at the bottom of the channel display,
|
||||
indicating the strength (upper bar) and quality (lower bar) of the received signal.
|
||||
The number to the left of these bars indicates the actual device the current
|
||||
channel is being received with.
|
||||
- Skins can now inquire the menu category for which their cSkinDisplayMenu is currently
|
||||
being used. This can be done either through a call to cSkinDisplayMenu::MenuCategory()
|
||||
or by reimplementing cSkinDisplayMenu::SetMenuCategory(). This information allows a
|
||||
skin to use special icons or decorations for the various types of menus in VDR.
|
||||
- The new member function cSkinDisplayReplay::SetRecording() allows a skin to display
|
||||
more information about the currently played recording.
|
||||
- The new skin "LCARS" is an enhanced version of the "ST:TNG" skin (which is still
|
||||
there in its original layout, for those who don't like the LCARS skin, or can't use
|
||||
it due to OSD limitations). The LCARS skin utilizes the new "menu category" feature
|
||||
to display additional information on the main menu page. It shows upcoming timers
|
||||
and the system's devices, as well as which device is recording which timers. The
|
||||
upper pane of the main menu displays the programme data in live and replay mode,
|
||||
and a progress bar. An indicator on the right side of the device list shows which
|
||||
device is currently used for live viewing, and whether it is in transfer mode.
|
||||
The individual device displays show the device number, the device type, which CAM
|
||||
(if any ) is currently assigned to the device, and the signal strength and quality.
|
||||
On the left side of the OSD there is a permanent display of the current date and
|
||||
time, the disk usage and the system load.
|
||||
"LCARS" is the new default skin of VDR. It requires at least a 4bpp (16 color) full
|
||||
screen OSD, but you can still operate it if your OSD can handle only fewer colors
|
||||
(in which case you may want to switch to the "ST:TNG" or "Classic VDR" skin).
|
||||
- The new functions SetItemEvent(), SetItemTimer(), SetItemChannel() and
|
||||
SetItemRecording() of the cSkinDisplayMenu class can be reimplemented by skin
|
||||
plugins to display these items in a more elaborate way than just a simple line of
|
||||
text.
|
||||
|
||||
Remote control:
|
||||
|
||||
- Changed the default location for the LIRC socket to /var/run/lirc/lircd.
|
||||
- The new setup options "OSD/Color key [0123]" can be used to adjust the sequence
|
||||
of the color buttons displayed in the menus to that of the color keys on your
|
||||
remote control.
|
||||
Authors of plugins that implement skins may want to adapt their SetButtons()
|
||||
function in order to make use of this new feature. See, for instance, the function
|
||||
cSkinClassicDisplayMenu::SetButtons() in skinclassic.c for details.
|
||||
- Added user defined key kUser0.
|
||||
- The new remote control key "Play/Pause" can be used with remote controls that don't
|
||||
have separate keys for "Play" and "Pause", but rather have a single key for both
|
||||
functions.
|
||||
- The new options "Setup/Miscellaneous/Remote control repeat delay" and
|
||||
"Setup/Miscellaneous/Remote control repeat delta" can be used to adjust the
|
||||
behavior of the remote control in case a key is held pressed down for a while, so
|
||||
that the repeat function kicks in.
|
||||
|
||||
Devices:
|
||||
|
||||
- Re-implemented handling of DVB-S2, which first appeared in version 1.5.14, but was
|
||||
revoked in version 1.5.15 in favor of making a stable version 1.6.0.
|
||||
Note that the channels.conf file now supports additional parameters, so you may
|
||||
want to make sure you have a backup of this file in case you need to go back to
|
||||
the previous version of VDR!
|
||||
- cDvbDevice now uses the FE_CAN_2G_MODULATION flag to determine whether a device
|
||||
can handle DVB-S2.
|
||||
- The support for full featured DVB cards of the TT/FuSi design has been moved
|
||||
into the new plugin 'dvbsddevice'. On systems that use such a card as their
|
||||
primary device, this plugin now needs to be loaded when running VDR in order
|
||||
to view live or recorded video. If the plugin is not loaded, the card will
|
||||
be treated like a budget DVB card, and there will be no OSD or viewing
|
||||
capability.
|
||||
- Added support for DVB cards with multiple fontends. Note that this only
|
||||
works for DVB cards where each frontend can be used independently of all
|
||||
the others on the same adapter.
|
||||
- Added support for ATSC devices. This obsoletes the ATSC patch.
|
||||
- The new functions cDevice::SignalStrength() and cDevice::SignalQuality() can be
|
||||
used to determine the signal strength and quality of a given device.
|
||||
- The new function cDevice::ProvidesEIT() is used to determine whether a device can
|
||||
provide EIT data and will thus be used in cEITScanner::Process() to receive EIT
|
||||
data from the channels it can receive. Note that by default it is assumed that
|
||||
a device can't provide EIT data, and only the builtin cDvbDevice returns true
|
||||
from this function.
|
||||
- Added support for devices with more than one delivery system per frontend.
|
||||
This requires a DVB driver with version 5.5 or higher that can handle the
|
||||
DTV_ENUM_DELSYS call. With older drivers it will fall back to one delivery
|
||||
system per frontend.
|
||||
- Added support for handling DVB-T2 transponders. This requires a DVB driver
|
||||
with version 5.3 or higher that can handle the DTV_DVBT2_PLP_ID call (which has
|
||||
been renamed to DTV_STREAM_ID in DVB API 5.8).
|
||||
- The DVB device adapters/frontends are now probed by scanning the /dev/dvb directory
|
||||
instead of looping through adapter/frontend numbers. This allows for "holes" in the
|
||||
device numbering.
|
||||
- Removed the "PrimaryLimit". Old "full featured" DVB cards can be run with the
|
||||
--outputonly option to avoid problems with recording high bandwidth channels.
|
||||
Besides, with HDTV becoming ever more popular those cards are pretty much obsolete
|
||||
by now (the TT S2-6400 has no problems recording and replaying high bandwidth
|
||||
channels simultaneously). And, last but not least, people using software players
|
||||
won't notice this change, anyway.
|
||||
- The new function cDevice::DeviceName() returns a string identifying the name of
|
||||
the given device.
|
||||
- The new function cDevice::DeviceType() returns a string identifying the type of
|
||||
the given device.
|
||||
- The new function cDevice::ReadFilter() can be used by devices to implement their
|
||||
own way of retrieving section filter data.
|
||||
- The new function cDevice::HasInternalCam() can be implemented by devices that
|
||||
provide encrypted channels in an already decrypted form, without requiring explicit
|
||||
handling of a CAM.
|
||||
- The new functions cDevice::CanScaleVideo() and cDevice::ScaleVideo() can be used by
|
||||
derived output devices to implement scaling the video to a given size and location.
|
||||
|
||||
DiSEqC:
|
||||
|
||||
- Added device definitions to the diseqc.conf file format, so that certain satellite
|
||||
positions can be limited to a given list of devices.
|
||||
This obsoletes the SOURCECAPS patch.
|
||||
- Transponders that use "8psk turbo fec" (a non-standard mode used by North American
|
||||
providers) are now identified by assuming that all 8psk transponders on DVB-S use
|
||||
"turbo fec".
|
||||
|
||||
EPG:
|
||||
|
||||
- The epg.data file is now read in a separate thread to make the startup process
|
||||
faster in case the file is very large.
|
||||
- Moved cleaning up the EPG data and writing the epg.data file into a separate
|
||||
thread to avoid sluggish response to user input on slow systems
|
||||
|
||||
OSD:
|
||||
|
||||
- The OSD and font sizes are now defined in percent of the actual video display
|
||||
size. The maximum OSD size has been raised to 1920x1080, to allow full
|
||||
screen OSD on HD systems.
|
||||
- The OSD size is now automatically adjusted to the actual video display
|
||||
(provided the output device implements the GetOsdSize() function).
|
||||
- The OSD now has full TrueColor support. There can be several "pixmaps" that can
|
||||
be overlayed with alpha blending. All existing skins should work out of the box
|
||||
with the TrueColor OSD - the only exception being cOsd::GetBitmap(). Since the
|
||||
TrueColor OSD doesn't use bitmaps, this function will return a dummy bitmap, which
|
||||
may not be what the plugin expects. As long as this bitmap is only used for setting
|
||||
the palette, there is no problem. However, any other operations on this bitmap will
|
||||
have no effect. See the description of the cPixmap functions in osd.h for details
|
||||
about the new functionalities.
|
||||
The "ST:TNG Panels" skin has been enhanced to automatically use the TrueColor OSD
|
||||
if available.
|
||||
The "osddemo" plugin has been extended to show some of the possibilities of the
|
||||
TrueColor OSD if it is run on a system that actually provides TrueColor support.
|
||||
- The Audio and Subtitles options are now available through the Green and Yellow
|
||||
keys in the Setup/DVB menu. This is mainly for remote controls that don't have
|
||||
dedicated keys for these functions.
|
||||
- The Recordings menu now displays the length (in hours:minutes) of each recording
|
||||
Note that the "new" indicator has been moved from the recording time to the length
|
||||
column. This new format is also used by the SVDRP command LSTR, so in case you have
|
||||
an application that parses the LSTR output, you will need to adjust it to the new
|
||||
format.
|
||||
- The new setup option "Replay/Show remaining time" can be used to switch between
|
||||
showing the total length or the remaining time of the recording that is currently
|
||||
replayed.
|
||||
- The replay progress display is now turned on whenever a mark is toggled (not
|
||||
only when one is set).
|
||||
- The Green button in the "Edit timer" menu can now be used to toggle between single
|
||||
shot and repeating timers. This is the same as pressing '0' when the "Day" field
|
||||
is selected, but it works at any time (and is more obvious).
|
||||
- When estimating the remaining disk space (in hours), the average data rate of all
|
||||
existing recordings is now taken into account. If this value can't be determined,
|
||||
the previous value of 25.75 MB/min is taken.
|
||||
- The disk usage is no longer automatically added to the title of the main and
|
||||
"Recordings" menus. This has always been a mekeshift solution and it is now up
|
||||
to the individual skin if, where and how it wants to display this information.
|
||||
A skin can use the new cVideoDiskUsage class to implement such a display. For
|
||||
compatibility, the default skins "Classic VDR", "ST:TNG Panels" and "Text mode"
|
||||
(i.e. curses) have been changed to behave like before. Other skins may want to
|
||||
display the disk usage in totally different ways.
|
||||
- A cOsdMenu can now handle skins that display different numbers of items in the
|
||||
various menu categories.
|
||||
- OSD and skin are now reinitialized after a plugin setup page has been confirmed,
|
||||
to have them react immediately in case any change to a plugin's setup parameter
|
||||
has an effect on the OSD.
|
||||
- Now making sure that the "small font" is never larger than the "osd font".
|
||||
- Within the "Recordings" menu, pressing the '0' key now toggles sorting between
|
||||
"by time" and "by name". The selected sort mode is stored separately for each
|
||||
folder (provided you have write access to that folder).
|
||||
If a folder is newly created by a repeating timer, the sort mode for that
|
||||
folder is initially set to "by time".
|
||||
- The new setup option "Miscellaneous/Show channel names with source" can be used to
|
||||
turn on adding the source character to channel names whenever they are displayed.
|
||||
- Pressing the Play key during normal live viewing mode now opens the Recordings menu
|
||||
if there is no "last viewed" recording.
|
||||
The same behavior has been implemented for the Blue key in the main menu.
|
||||
- The new option "Setup/Replay/Progress display time" can be used to activate
|
||||
automatically displaying the progress display whenever replay of a recording is
|
||||
started.
|
||||
|
||||
Time Shifting:
|
||||
|
||||
- The new setup option "Recording/Pause key handling" can be used to define
|
||||
what happens if the Pause key on the remote control is pressed during
|
||||
live tv.
|
||||
- The new setup option "Recording/Delete timeshift recording" controls whether a timeshift
|
||||
recording is automatically deleted after viewing it.
|
||||
This obsoletes the DELTIMESHIFTREC patch.
|
||||
Note that the meaning of the values for this option is different from the DELTIMESHIFTREC
|
||||
patch: 0 means timeshift recordings are not automatically deleted (the default behavior
|
||||
as in previous versions), while 1 means to ask the user whether the recording shall be
|
||||
deleted.
|
||||
- The setup parameter "Recording/Instant rec. time (min)" can now be set to '0',
|
||||
which means to record only the currently running event.
|
||||
- When pausing live video, the current audio and subtitle tracks are now retained.
|
||||
|
||||
Timers:
|
||||
|
||||
- The "Edit timer" menu can now set the folder for the recording from a list of
|
||||
folders stored in "folders.conf".
|
||||
- The file name in the "Timers" menu now shows only the base name of the recording
|
||||
without the folder path (if any). Otherwise with long folder paths the actual
|
||||
recording name was not visible at all.
|
||||
- The new setup option "Folders in timer menu" controls whether the file names in
|
||||
the timer menu are shown with their full folder path.
|
||||
|
||||
Recordings:
|
||||
|
||||
- The recording format is now TS (Transport Stream).
|
||||
Existing recordings in PES format can still be replayed and edited, but new
|
||||
recordings are done in TS.
|
||||
All code for recording in PES has been removed.
|
||||
The following changes were made to switch to TS recording format:
|
||||
+ Since a TS needs to have a PAT/PMT, which requires the video stream type to
|
||||
be explicitly given, the format of the VPID field in the channels.conf file
|
||||
and the SVDRP commands NEWC/MODC/LSTC has been extended. The video stream type
|
||||
now follows the VPID and optional PPID, separated by an '=' sign.
|
||||
+ The index file format has been changed to support file sizes of up to 1TB
|
||||
(previously 2GB), and up to 65535 separate files per recording (previously
|
||||
255).
|
||||
+ The recording file names are now of the form 00001.ts (previously 001.vdr).
|
||||
+ The frame rate is now detected by looking at two subsequent PTS values.
|
||||
The "frames per second" is stored in the "info" file using the new tag F.
|
||||
+ The directory name for a recording has been changed from
|
||||
YYYY-MM-DD-hh[.:]mm.pr.lt.rec (pr=priority, lt=lifetime) to
|
||||
YYYY-MM-DD-hh.mm.ch-ri.rec (ch=channel, ri=resumeId).
|
||||
Priority and Lifetime are now stored in the "info" file with the new
|
||||
tags P and L (if no such file exists, the maximum values are assumed by
|
||||
default, which avoids inadvertently deleting a recording if disk space
|
||||
is low). No longer storing Priority and Lifetime in the directory name
|
||||
avoids starting a new recording if one of these is changed in the timer
|
||||
and the recording is re-started for some reason.
|
||||
Instead of Priority and Lifetime, the directory name now contains the
|
||||
channel number from which the recording was made, and the "instance id"
|
||||
this instance of VDR. This avoids problems if several VDR instances record
|
||||
the same show on different channels, or even on the same channel.
|
||||
The '-' between channel number and resumeId prevents older versions of
|
||||
VDR from "seeing" these recordings, which makes sure they won't even try
|
||||
to replay them, or remove them in case the disk runs full.
|
||||
+ The files "index", "info", "marks" and "resume" within a TS recording
|
||||
directory are now created without the ".vdr" extension.
|
||||
+ The "resume" file is no longer a binary file, but contains tagged lines
|
||||
to be able to store additional information, like the selected audio or
|
||||
subtitle track.
|
||||
+ cDvbPlayer::Goto() no longer appends a "sequence end code" to the data.
|
||||
If the output device needs this, it has to take care of it by itself.
|
||||
- The index file for TS recordings is now regenerated on-the-fly if a
|
||||
recording is replayed that has no index. This can also be used to
|
||||
re-create a broken index file by manually deleting the index file and then
|
||||
replaying the recording (at least until the index file has been generated).
|
||||
- The new command line options --edit and --genindex can be used to edit a
|
||||
recording or generate its index without actually starting the entire VDR.
|
||||
- The new command line options --filesize and --split can be used together with --edit
|
||||
to set the maximum video file size and turn on splitting edited files at the editing
|
||||
marks. These options must be given before --edit to have an effect.
|
||||
- The start time of an edited recording is now set to the time of the first
|
||||
editing mark.
|
||||
This obsoletes the CUTTIME patch.
|
||||
- An ongoing editing process is now canceled if either the original or the edited
|
||||
version of the recording is deleted from the Recordings menu.
|
||||
- If a frame position in the 'marks' file of a recording doesn't point to an I-frame,
|
||||
it will now be shifted towards the next I-frame (either up or down, whichever is
|
||||
closer).
|
||||
- Editing marks can now be placed directly on top of each other, in which case they
|
||||
simply mark a position, but have no effect on the actual cutting process.
|
||||
- When positioned at an offset where two (or more) editing marks are placed on top
|
||||
of each other, the '4' key moves the first one of them to the left, while the '6'
|
||||
key moves the last one of them to the right. The '7' and '9' key handle multiple
|
||||
marks at the same place as if it were one single mark.
|
||||
- The '7' and '9' keys now jump to the very beginning or end, respectively, of the
|
||||
recording, even if there is no mark set at that point.
|
||||
- The new option "Setup/Replay/Pause on mark set" can be used to activate automatically
|
||||
going into Pause mode if an editing mark is set during replay.
|
||||
- Timers no longer do any special "VFAT" handling to shorten directory names to 40
|
||||
characters. When a string is used as a directory name for a recording, the maximum
|
||||
length of the directory path, as well as the individual directory names, is now
|
||||
limited to the values specified by the new command line option --dirnames (see
|
||||
man vdr(1) for details). For backwards compatibility the option --vfat is still
|
||||
available and has the same effect as --dirnames=250,40,1.
|
||||
- Improved cutting videos.
|
||||
|
||||
SVDRP:
|
||||
|
||||
- The SVDRP signon message now indicates the character encoding in use, as in
|
||||
"220 video SVDRP VideoDiskRecorder 1.7.1; Fri May 2 16:17:10 2008; ISO-8859-1".
|
||||
This may be useful for instance for external tools that provide EPG data, so that
|
||||
they can correctly encode the strings.
|
||||
- The SVDRP command PUTE now supports reading the EPG data from a given file.
|
||||
- After a CLRE command, no further EPG processing is now done for 10 seconds,
|
||||
so that data sent with subsequent PUTE commands doesn't interfere with data
|
||||
from the broadcasters.
|
||||
- If svdrphosts.conf contains only the address of the local host, the SVDRP port
|
||||
is opened only for the local host.
|
||||
- The default SVDRP port is now 6419 (registered with ICANN/IANA).
|
||||
Use '-p 2001' to switch back to the old port if necessary.
|
||||
- The SVDRP command HITK now accepts multiple keys (up to 31).
|
||||
- The SVDRP command LSTC now also accepts channel IDs.
|
||||
- The new SVDRP command UPDR can be used to trigger an update of the list of
|
||||
recordings.
|
||||
- The SVDRP command DELR now won't delete a recording that is currently being edited.
|
||||
- The SVDRP command LSTR now knows the additional parameter "path", which can be
|
||||
given to get the actual file name of a recording's directory.
|
||||
- The SVDRP command NEWT no longer checks whether a timer with the given data already
|
||||
exists.
|
||||
|
||||
Audio:
|
||||
|
||||
- Implemented handling the standard component descriptor for AC3 (stream=4).
|
||||
The previously used "Premiere pseudo standard" (stream=2, type=5) still works, but
|
||||
has apparently been wrongfully used by broadcasters from the beginning.
|
||||
- Improved fast-forward/-rewind for audio recordings. The actual data is now sent
|
||||
to the output device, so that it can be replayed and thus cause the proper delay.
|
||||
For pure audio recordings the audio is no longer muted in fast-forward/-rewind
|
||||
mode, so that some orientation regarding the position within the recording is
|
||||
possible.
|
||||
- The option "Setup/DVB/Use Dolby Digital" now only controls whether Dolby Digital
|
||||
tracks appear in the "Audio" menu. Dolby Digital is always recorded.
|
||||
This obsoletes the DOLBYINREC patch.
|
||||
|
||||
Internationalization:
|
||||
|
||||
- Added Lithuanian language texts.
|
||||
- Added Slovakian language texts.
|
||||
- Added Macedonian language texts.
|
||||
- Added support for languages that are written right-to-left.
|
||||
See INSTALL for information on how to turn this on.
|
||||
- Added Arabian language texts.
|
||||
- Added Serbian language texts.
|
||||
|
||||
Misc:
|
||||
|
||||
- Errors in config files no longer keep VDR from starting.
|
||||
- The new command line option -i can be used to set an "instance id", which will
|
||||
be used to distinguish recordings of the same broadcast made by different instances
|
||||
of VDR.
|
||||
- Implemented handling the "Parental Rating Descriptor".
|
||||
The 'classic', 'sttng' and 'curses' skins display the parental
|
||||
rating (if given) in their event displays. The epg.data file stores
|
||||
the parental rating using the tag character 'R'.
|
||||
IMPORTANT NOTE: if VDR doesn't display a parental rating, this does not
|
||||
necessarily mean that the given programme is suitable for all audiences!
|
||||
- Renamed 'runvdr' to 'runvdr.template' and no longer copying it to the BINDIR
|
||||
in 'make install'.
|
||||
- The new setup option "Miscellaneous/Channels wrap" controls whether the current
|
||||
channel wraps around the beginning or end of the channel list when zapping.
|
||||
- The files "commands.conf" and "reccmd.conf" can now contain nested lists of
|
||||
commands. See vdr.5 for information about the new file format.
|
||||
This obsoletes the CMDSUBMENU patch.
|
||||
- The new setup option "OSD/Number keys for characters" can be used to control whether
|
||||
the number keys can be used to enter characters in a text input field.
|
||||
- While replaying, the editing marks are now updated every 10 seconds.
|
||||
- Added generating a pkg-config file to the Makefile.
|
||||
- Removed the '.pl' suffix from all scripts.
|
||||
- The new setup option "DVB/Standard compliance" can be used to switch between different
|
||||
variations of the DVB standard. Currently there is "DVB" (for the original DVB
|
||||
standard) and "ANSI/SCTE", which is used to properly handle certain private stream
|
||||
types.
|
||||
- By default VDR is now built according to the FHS ("File system Hierarchy Standard"),
|
||||
and a plain "make" in the VDR source directory just builds everything, but doesn't
|
||||
copy it to ./PLUGINS/lib and ./locale any more. You can use a Make.config file
|
||||
(copied from Make.config.template) and set the parameter LCLBLD=1 to have everything
|
||||
built and installed under the VDR source tree (as was the default in previous
|
||||
versions). If you already have your own Make.config file, you may want to copy the
|
||||
new Make.config.template and adapt it to your needs. If you don't want VDR's data
|
||||
files to be spread around your system according to the FHS, you can set the
|
||||
parameter ONEDIR=1 (using Make.config) to have all files in one /video directory as
|
||||
before.
|
||||
- VDR can now be built according to the FHS ("File system Hierarchy Standard") by
|
||||
activating the line
|
||||
#USEFHS = 1
|
||||
in a copy of the file Make.config.template.
|
||||
- The script given to VDR with the '-r' option is now also called whenever a
|
||||
recording is deleted.
|
||||
- Synchronizing system time to the transponder time is now done using adjtime() in order
|
||||
to avoid discontinuities. If the time difference is more than 10 seconds, stime() is
|
||||
still used to do the initial sync.
|
||||
- Implemented scaling of SPU bitmaps.
|
@ -9,7 +9,6 @@ BBC TWO (TV):505833:I0C34D0M16B8T2G32Y0:T:27500:610:611,612:0:2:4228:0:0:0
|
||||
bid-up.tv (TV):561833:I0C23D0M64B8T2G32Y0:T:27500:6273:6274:0:0:14272:0:0:0
|
||||
CBBC (TV):505833:I0C34D0M16B8T2G32Y0:T:27500:620:621,622:0:0:4671:0:0:0
|
||||
Cbeebies (TV):529833:I0C34D0M16B8T2G32Y0:T:27500:201:401,402:0:0:16960:0:0:0
|
||||
Ch 14 (TV):481833:I0C23D0M64B8T2G32Y0:T:27500:2840:2841:2843:0:0:8800:0:0
|
||||
Ch 32 (TV):537833:I0C34D0M16B8T2G32Y0:T:27500:501:502,504:0:0:25984:0:0:0
|
||||
Ch 44 (TV):537833:I0C34D0M16B8T2G32Y0:T:27500:501:502,504:0:0:26048:0:0:0
|
||||
Channel 4 (TV):481833:I0C23D0M64B8T2G32Y0:T:27500:2827:2828,2830:0:0:8384:0:0:0
|
||||
|
16
ci.c
16
ci.c
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: ci.c 2.10 2012/10/07 11:11:18 kls Exp $
|
||||
* $Id: ci.c 2.12 2013/02/17 13:17:28 kls Exp $
|
||||
*/
|
||||
|
||||
#include "ci.h"
|
||||
@ -35,7 +35,7 @@ static bool DumpDateTime = false;
|
||||
|
||||
static const uint8_t *GetLength(const uint8_t *Data, int &Length)
|
||||
///< Gets the length field from the beginning of Data.
|
||||
///< \return Returns a pointer to the first byte after the length and
|
||||
///< Returns a pointer to the first byte after the length and
|
||||
///< stores the length value in Length.
|
||||
{
|
||||
Length = *Data++;
|
||||
@ -50,7 +50,7 @@ static const uint8_t *GetLength(const uint8_t *Data, int &Length)
|
||||
|
||||
static uint8_t *SetLength(uint8_t *Data, int Length)
|
||||
///< Sets the length field at the beginning of Data.
|
||||
///< \return Returns a pointer to the first byte after the length.
|
||||
///< Returns a pointer to the first byte after the length.
|
||||
{
|
||||
uint8_t *p = Data;
|
||||
if (Length < 128)
|
||||
@ -70,7 +70,7 @@ static uint8_t *SetLength(uint8_t *Data, int Length)
|
||||
|
||||
static char *CopyString(int Length, const uint8_t *Data)
|
||||
///< Copies the string at Data.
|
||||
///< \return Returns a pointer to a newly allocated string.
|
||||
///< Returns a pointer to a newly allocated string.
|
||||
{
|
||||
// Some CAMs send funny characters at the beginning of strings.
|
||||
// Let's just skip them:
|
||||
@ -88,7 +88,7 @@ static char *CopyString(int Length, const uint8_t *Data)
|
||||
|
||||
static char *GetString(int &Length, const uint8_t **Data)
|
||||
///< Gets the string at Data.
|
||||
///< \return Returns a pointer to a newly allocated string, or NULL in case of error.
|
||||
///< Returns a pointer to a newly allocated string, or NULL in case of error.
|
||||
///< Upon return Length and Data represent the remaining data after the string has been skipped.
|
||||
{
|
||||
if (Length > 0 && Data && *Data) {
|
||||
@ -371,7 +371,7 @@ cCiSession::~cCiSession()
|
||||
|
||||
int cCiSession::GetTag(int &Length, const uint8_t **Data)
|
||||
///< Gets the tag at Data.
|
||||
///< \return Returns the actual tag, or AOT_NONE in case of error.
|
||||
///< Returns the actual tag, or AOT_NONE in case of error.
|
||||
///< Upon return Length and Data represent the remaining data after the tag has been skipped.
|
||||
{
|
||||
if (Length >= 3 && Data && *Data) {
|
||||
@ -959,7 +959,7 @@ cCiMMI::~cCiMMI()
|
||||
|
||||
char *cCiMMI::GetText(int &Length, const uint8_t **Data)
|
||||
///< Gets the text at Data.
|
||||
///< \return Returns a pointer to a newly allocated string, or NULL in case of error.
|
||||
///< Returns a pointer to a newly allocated string, or NULL in case of error.
|
||||
///< Upon return Length and Data represent the remaining data after the text has been skipped.
|
||||
{
|
||||
int Tag = GetTag(Length, Data);
|
||||
@ -1936,7 +1936,7 @@ bool cCamSlot::CanDecrypt(const cChannel *Channel)
|
||||
for (const int *Dpid = Channel->Dpids(); *Dpid; Dpid++)
|
||||
CaPmt.AddPid(*Dpid, STREAM_TYPE_PRIVATE);
|
||||
for (const int *Spid = Channel->Spids(); *Spid; Spid++)
|
||||
CaPmt.AddPid(*Spid, STREAM_TYPE_PRIVATE);
|
||||
CaPmt.AddPid(*Spid, STREAM_TYPE_PRIVATE);
|
||||
cas->SendPMT(&CaPmt);
|
||||
cTimeMs Timeout(QUERY_REPLY_TIMEOUT);
|
||||
do {
|
||||
|
4
config.c
4
config.c
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: config.c 2.34 2013/02/05 11:16:08 kls Exp $
|
||||
* $Id: config.c 2.35 2013/02/14 15:14:37 kls Exp $
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
@ -383,7 +383,7 @@ cSetup::cSetup(void)
|
||||
MenuScrollWrap = 0;
|
||||
MenuKeyCloses = 0;
|
||||
MarkInstantRecord = 1;
|
||||
strcpy(NameInstantRecord, "TITLE EPISODE");
|
||||
strcpy(NameInstantRecord, TIMERMACRO_TITLE " " TIMERMACRO_EPISODE);
|
||||
InstantRecordTime = DEFINSTRECTIME;
|
||||
LnbSLOF = 11700;
|
||||
LnbFrequLo = 9750;
|
||||
|
13
config.h
13
config.h
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: config.h 2.64 2013/02/05 11:19:20 kls Exp $
|
||||
* $Id: config.h 2.67 2013/02/14 15:13:59 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef __CONFIG_H
|
||||
@ -22,13 +22,13 @@
|
||||
|
||||
// VDR's own version number:
|
||||
|
||||
#define VDRVERSION "1.7.37"
|
||||
#define VDRVERSNUM 10737 // Version * 10000 + Major * 100 + Minor
|
||||
#define VDRVERSION "1.7.38"
|
||||
#define VDRVERSNUM 10738 // Version * 10000 + Major * 100 + Minor
|
||||
|
||||
// The plugin API's version number:
|
||||
|
||||
#define APIVERSION "1.7.37"
|
||||
#define APIVERSNUM 10737 // Version * 10000 + Major * 100 + Minor
|
||||
#define APIVERSION "1.7.38"
|
||||
#define APIVERSNUM 10738 // Version * 10000 + Major * 100 + Minor
|
||||
|
||||
// When loading plugins, VDR searches them by their APIVERSION, which
|
||||
// may be smaller than VDRVERSION in case there have been no changes to
|
||||
@ -44,6 +44,9 @@
|
||||
#define MAXLIFETIME 99
|
||||
#define DEFINSTRECTIME 180 // default instant recording time (minutes)
|
||||
|
||||
#define TIMERMACRO_TITLE "TITLE"
|
||||
#define TIMERMACRO_EPISODE "EPISODE"
|
||||
|
||||
#define MINOSDWIDTH 480
|
||||
#define MAXOSDWIDTH 1920
|
||||
#define MINOSDHEIGHT 324
|
||||
|
4
cutter.c
4
cutter.c
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: cutter.c 2.23 2013/01/23 10:39:27 kls Exp $
|
||||
* $Id: cutter.c 2.24 2013/02/17 14:11:03 kls Exp $
|
||||
*/
|
||||
|
||||
#include "cutter.h"
|
||||
@ -104,7 +104,7 @@ void cPacketStorage::Flush(int Pid, uchar *Data, int &Length, int MaxLength)
|
||||
buffers[Pid]->Flush(Data, Length, MaxLength);
|
||||
}
|
||||
|
||||
// --- cMpeg2Fixer --------------------------------------------------------
|
||||
// --- cMpeg2Fixer -----------------------------------------------------------
|
||||
|
||||
class cMpeg2Fixer : private cTsPayload {
|
||||
private:
|
||||
|
8
device.c
8
device.c
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: device.c 2.71 2013/02/01 12:00:09 kls Exp $
|
||||
* $Id: device.c 2.73 2013/02/16 14:39:30 kls Exp $
|
||||
*/
|
||||
|
||||
#include "device.h"
|
||||
@ -845,12 +845,12 @@ bool cDevice::SetChannelDevice(const cChannel *Channel, bool LiveView)
|
||||
return false;
|
||||
}
|
||||
|
||||
bool cDevice::HasLock(int TimeoutMs)
|
||||
bool cDevice::HasLock(int TimeoutMs) const
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
bool cDevice::HasProgramme(void)
|
||||
bool cDevice::HasProgramme(void) const
|
||||
{
|
||||
return Replaying() || pidHandles[ptAudio].pid || pidHandles[ptVideo].pid;
|
||||
}
|
||||
@ -1537,7 +1537,7 @@ int cDevice::PlayTs(const uchar *Data, int Length, bool VideoOnly)
|
||||
int cDevice::Priority(void) const
|
||||
{
|
||||
int priority = IDLEPRIORITY;
|
||||
if (IsPrimaryDevice() && !Replaying() && ActualDevice() == PrimaryDevice())
|
||||
if (IsPrimaryDevice() && !Replaying() && HasProgramme())
|
||||
priority = TRANSFERPRIORITY; // we use the same value here, no matter whether it's actual Transfer Mode or real live viewing
|
||||
cMutexLock MutexLock(&mutexReceiver);
|
||||
for (int i = 0; i < MAXRECEIVERS; i++) {
|
||||
|
52
device.h
52
device.h
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: device.h 2.45 2013/02/01 11:54:08 kls Exp $
|
||||
* $Id: device.h 2.47 2013/02/16 15:20:01 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef __DEVICE_H
|
||||
@ -116,7 +116,7 @@ public:
|
||||
///< Waits until all devices have become ready, or the given Timeout
|
||||
///< (seconds) has expired. While waiting, the Ready() function of each
|
||||
///< device is called in turn, until they all return true.
|
||||
///< \return True if all devices have become ready within the given
|
||||
///< Returns true if all devices have become ready within the given
|
||||
///< timeout.
|
||||
static void SetUseDevice(int n);
|
||||
///< Sets the 'useDevice' flag of the given device.
|
||||
@ -127,8 +127,8 @@ public:
|
||||
///< this instance of VDR.
|
||||
static bool SetPrimaryDevice(int n);
|
||||
///< Sets the primary device to 'n'.
|
||||
///< \param n must be in the range 1...numDevices.
|
||||
///< \return true if this was possible.
|
||||
///< n must be in the range 1...numDevices.
|
||||
///< Returns true if this was possible.
|
||||
static cDevice *PrimaryDevice(void) { return primaryDevice; }
|
||||
///< Returns the primary device.
|
||||
static cDevice *ActualDevice(void);
|
||||
@ -136,8 +136,8 @@ public:
|
||||
///< primary device otherwise.
|
||||
static cDevice *GetDevice(int Index);
|
||||
///< Gets the device with the given Index.
|
||||
///< \param Index must be in the range 0..numDevices-1.
|
||||
///< \return A pointer to the device, or NULL if the Index was invalid.
|
||||
///< Index must be in the range 0..numDevices-1.
|
||||
///< Returns a pointer to the device, or NULL if the Index was invalid.
|
||||
static cDevice *GetDevice(const cChannel *Channel, int Priority, bool LiveView, bool Query = false);
|
||||
///< Returns a device that is able to receive the given Channel at the
|
||||
///< given Priority, with the least impact on active recordings and
|
||||
@ -328,13 +328,13 @@ public:
|
||||
///< after the device has been successfully tuned to the requested transponder.
|
||||
///< Seconds will be silently limited to MAXOCCUPIEDTIMEOUT. Values less than
|
||||
///< 0 will be silently ignored.
|
||||
virtual bool HasLock(int TimeoutMs = 0);
|
||||
virtual bool HasLock(int TimeoutMs = 0) const;
|
||||
///< Returns true if the device has a lock on the requested transponder.
|
||||
///< Default is true, a specific device implementation may return false
|
||||
///< to indicate that it is not ready yet.
|
||||
///< If TimeoutMs is not zero, waits for the given number of milliseconds
|
||||
///< before returning false.
|
||||
virtual bool HasProgramme(void);
|
||||
virtual bool HasProgramme(void) const;
|
||||
///< Returns true if the device is currently showing any programme to
|
||||
///< the user, either through replaying or live.
|
||||
|
||||
@ -432,19 +432,19 @@ public:
|
||||
public:
|
||||
virtual uchar *GrabImage(int &Size, bool Jpeg = true, int Quality = -1, int SizeX = -1, int SizeY = -1);
|
||||
///< Grabs the currently visible screen image.
|
||||
///< \param Size The size of the returned data block.
|
||||
///< \param Jpeg If true will write a JPEG file. Otherwise a PNM file will be written.
|
||||
///< \param Quality The compression factor for JPEG. 1 will create a very blocky
|
||||
///< and small image, 70..80 will yield reasonable quality images while keeping the
|
||||
///< image file size around 50 KB for a full frame. The default will create a big
|
||||
///< but very high quality image.
|
||||
///< \param SizeX The number of horizontal pixels in the frame (default is the current screen width).
|
||||
///< \param SizeY The number of vertical pixels in the frame (default is the current screen height).
|
||||
///< \return A pointer to the grabbed image data, or NULL in case of an error.
|
||||
///< Size is the size of the returned data block.
|
||||
///< If Jpeg is true it will write a JPEG file. Otherwise a PNM file will be written.
|
||||
///< Quality is the compression factor for JPEG. 1 will create a very blocky
|
||||
///< and small image, 70..80 will yield reasonable quality images while keeping the
|
||||
///< image file size around 50 KB for a full frame. The default will create a big
|
||||
///< but very high quality image.
|
||||
///< SizeX is the number of horizontal pixels in the frame (default is the current screen width).
|
||||
///< SizeY is the number of vertical pixels in the frame (default is the current screen height).
|
||||
///< Returns a pointer to the grabbed image data, or NULL in case of an error.
|
||||
///< The caller takes ownership of the returned memory and must free() it once it isn't needed any more.
|
||||
bool GrabImageFile(const char *FileName, bool Jpeg = true, int Quality = -1, int SizeX = -1, int SizeY = -1);
|
||||
///< Calls GrabImage() and stores the resulting image in a file with the given name.
|
||||
///< \return True if all went well.
|
||||
///< Returns true if all went well.
|
||||
///< The caller is responsible for making sure that the given file name
|
||||
///< doesn't lead to overwriting any important other file.
|
||||
|
||||
@ -509,7 +509,7 @@ public:
|
||||
///< Index tells which track of the given basic type is meant.
|
||||
///< If Id is 0 any existing id will be left untouched and only the
|
||||
///< given Language and Description will be set.
|
||||
///< \return Returns true if the track was set correctly, false otherwise.
|
||||
///< Returns true if the track was set correctly, false otherwise.
|
||||
const tTrackId *GetTrack(eTrackType Type);
|
||||
///< Returns a pointer to the given track id, or NULL if Type is not
|
||||
///< less than ttMaxTrackTypes.
|
||||
@ -525,14 +525,14 @@ public:
|
||||
eTrackType GetCurrentAudioTrack(void) const { return currentAudioTrack; }
|
||||
bool SetCurrentAudioTrack(eTrackType Type);
|
||||
///< Sets the current audio track to the given Type.
|
||||
///< \return Returns true if Type is a valid audio track, false otherwise.
|
||||
///< Returns true if Type is a valid audio track, false otherwise.
|
||||
eTrackType GetCurrentSubtitleTrack(void) const { return currentSubtitleTrack; }
|
||||
bool SetCurrentSubtitleTrack(eTrackType Type, bool Manual = false);
|
||||
///< Sets the current subtitle track to the given Type.
|
||||
///< IF Manual is true, no automatic preferred subtitle language selection
|
||||
///< will be done for the rest of the current replay session, or until
|
||||
///< the channel is changed.
|
||||
///< \return Returns true if Type is a valid subtitle track, false otherwise.
|
||||
///< Returns true if Type is a valid subtitle track, false otherwise.
|
||||
void EnsureAudioTrack(bool Force = false);
|
||||
///< Makes sure an audio track is selected that is actually available.
|
||||
///< If Force is true, the language and Dolby Digital settings will
|
||||
@ -593,13 +593,13 @@ protected:
|
||||
///< Returns true if this device can currently start a replay session.
|
||||
virtual bool SetPlayMode(ePlayMode PlayMode);
|
||||
///< Sets the device into the given play mode.
|
||||
///< \return true if the operation was successful.
|
||||
///< Returns true if the operation was successful.
|
||||
virtual int PlayVideo(const uchar *Data, int Length);
|
||||
///< Plays the given data block as video.
|
||||
///< Data points to exactly one complete PES packet of the given Length.
|
||||
///< PlayVideo() shall process the packet either as a whole (returning
|
||||
///< Length) or not at all (returning 0 or -1 and setting 'errno' accordingly).
|
||||
///< \return Returns the number of bytes actually taken from Data, or -1
|
||||
///< Returns the number of bytes actually taken from Data, or -1
|
||||
///< in case of an error.
|
||||
virtual int PlayAudio(const uchar *Data, int Length, uchar Id);
|
||||
///< Plays the given data block as audio.
|
||||
@ -607,14 +607,14 @@ protected:
|
||||
///< Id indicates the type of audio data this packet holds.
|
||||
///< PlayAudio() shall process the packet either as a whole (returning
|
||||
///< Length) or not at all (returning 0 or -1 and setting 'errno' accordingly).
|
||||
///< \return Returns the number of bytes actually taken from Data, or -1
|
||||
///< Returns the number of bytes actually taken from Data, or -1
|
||||
///< in case of an error.
|
||||
virtual int PlaySubtitle(const uchar *Data, int Length);
|
||||
///< Plays the given data block as a subtitle.
|
||||
///< Data points to exactly one complete PES packet of the given Length.
|
||||
///< PlaySubtitle() shall process the packet either as a whole (returning
|
||||
///< Length) or not at all (returning 0 or -1 and setting 'errno' accordingly).
|
||||
///< \return Returns the number of bytes actually taken from Data, or -1
|
||||
///< Returns the number of bytes actually taken from Data, or -1
|
||||
///< in case of an error.
|
||||
virtual int PlayPesPacket(const uchar *Data, int Length, bool VideoOnly = false);
|
||||
///< Plays the single PES packet in Data with the given Length.
|
||||
@ -658,7 +658,7 @@ public:
|
||||
///< Only the lower 32 bit of this value are actually used, since some
|
||||
///< devices can't handle the msb correctly.
|
||||
virtual bool IsPlayingVideo(void) const { return isPlayingVideo; }
|
||||
///< \return Returns true if the currently attached player has delivered
|
||||
///< Returns true if the currently attached player has delivered
|
||||
///< any video packets.
|
||||
virtual cRect CanScaleVideo(const cRect &Rect, int Alignment = taCenter) { return cRect::Null; }
|
||||
///< Asks the output device whether it can scale the currently shown video in
|
||||
|
20
dvbdevice.c
20
dvbdevice.c
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: dvbdevice.c 2.77 2012/12/30 13:08:41 kls Exp $
|
||||
* $Id: dvbdevice.c 2.80 2013/02/17 13:17:33 kls Exp $
|
||||
*/
|
||||
|
||||
#include "dvbdevice.h"
|
||||
@ -583,15 +583,13 @@ int cDvbTuner::GetSignalQuality(void) const
|
||||
while (1) {
|
||||
if (ioctl(fd_frontend, FE_READ_SNR, &Snr) != -1)
|
||||
break;
|
||||
if (errno == EOPNOTSUPP) {
|
||||
if (errno != EINTR) {
|
||||
Snr = 0xFFFF;
|
||||
#ifdef DEBUG_SIGNALQUALITY
|
||||
HasSnr = false;
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
if (errno != EINTR)
|
||||
return -1;
|
||||
}
|
||||
#ifdef DEBUG_SIGNALQUALITY
|
||||
bool HasBer = true;
|
||||
@ -600,15 +598,13 @@ int cDvbTuner::GetSignalQuality(void) const
|
||||
while (1) {
|
||||
if (ioctl(fd_frontend, FE_READ_BER, &Ber) != -1)
|
||||
break;
|
||||
if (errno == EOPNOTSUPP) {
|
||||
if (errno != EINTR) {
|
||||
Ber = 0;
|
||||
#ifdef DEBUG_SIGNALQUALITY
|
||||
HasBer = false;
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
if (errno != EINTR)
|
||||
return -1;
|
||||
}
|
||||
#ifdef DEBUG_SIGNALQUALITY
|
||||
bool HasUnc = true;
|
||||
@ -617,15 +613,13 @@ int cDvbTuner::GetSignalQuality(void) const
|
||||
while (1) {
|
||||
if (ioctl(fd_frontend, FE_READ_UNCORRECTED_BLOCKS, &Unc) != -1)
|
||||
break;
|
||||
if (errno == EOPNOTSUPP) {
|
||||
if (errno != EINTR) {
|
||||
Unc = 0;
|
||||
#ifdef DEBUG_SIGNALQUALITY
|
||||
HasUnc = false;
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
if (errno != EINTR)
|
||||
return -1;
|
||||
}
|
||||
uint16_t MaxSnr = 0xFFFF; // Let's assume the default is using the entire range.
|
||||
// Use the subsystemId to identify individual devices in case they need
|
||||
@ -665,7 +659,7 @@ void cDvbTuner::ExecuteDiseqc(const cDiseqc *Diseqc, unsigned int *Frequency)
|
||||
}
|
||||
static cMutex Mutex;
|
||||
if (Diseqc->IsScr())
|
||||
Mutex.Lock();
|
||||
Mutex.Lock();
|
||||
struct dvb_diseqc_master_cmd cmd;
|
||||
const char *CurrentAction = NULL;
|
||||
for (;;) {
|
||||
@ -687,7 +681,7 @@ void cDvbTuner::ExecuteDiseqc(const cDiseqc *Diseqc, unsigned int *Frequency)
|
||||
if (scr)
|
||||
ResetToneAndVoltage(); // makes sure we don't block the bus!
|
||||
if (Diseqc->IsScr())
|
||||
Mutex.Unlock();
|
||||
Mutex.Unlock();
|
||||
}
|
||||
|
||||
void cDvbTuner::ResetToneAndVoltage(void)
|
||||
@ -1541,7 +1535,7 @@ bool cDvbDevice::SetChannelDevice(const cChannel *Channel, bool LiveView)
|
||||
return true;
|
||||
}
|
||||
|
||||
bool cDvbDevice::HasLock(int TimeoutMs)
|
||||
bool cDvbDevice::HasLock(int TimeoutMs) const
|
||||
{
|
||||
return dvbTuner ? dvbTuner->Locked(TimeoutMs) : false;
|
||||
}
|
||||
|
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: dvbdevice.h 2.26 2012/03/31 11:13:31 kls Exp $
|
||||
* $Id: dvbdevice.h 2.28 2013/02/16 15:20:17 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef __DVBDEVICE_H
|
||||
@ -119,7 +119,7 @@ public:
|
||||
static bool Initialize(void);
|
||||
///< Initializes the DVB devices.
|
||||
///< Must be called before accessing any DVB functions.
|
||||
///< \return True if any devices are available.
|
||||
///< Returns true if any devices are available.
|
||||
protected:
|
||||
int adapter, frontend;
|
||||
private:
|
||||
@ -192,7 +192,7 @@ public:
|
||||
protected:
|
||||
virtual bool SetChannelDevice(const cChannel *Channel, bool LiveView);
|
||||
public:
|
||||
virtual bool HasLock(int TimeoutMs = 0);
|
||||
virtual bool HasLock(int TimeoutMs = 0) const;
|
||||
|
||||
// PID handle facilities
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: dvbplayer.c 2.29 2013/01/27 14:03:16 kls Exp $
|
||||
* $Id: dvbplayer.c 2.30 2013/02/12 10:50:10 kls Exp $
|
||||
*/
|
||||
|
||||
#include "dvbplayer.h"
|
||||
@ -576,7 +576,7 @@ void cDvbPlayer::Action(void)
|
||||
if (eof || SwitchToPlayFrame) {
|
||||
bool SwitchToPlay = false;
|
||||
uint32_t Stc = DeviceGetSTC();
|
||||
if (Stc != LastStc)
|
||||
if (Stc != LastStc || playMode == pmPause)
|
||||
StuckAtEof = 0;
|
||||
else if (!StuckAtEof)
|
||||
StuckAtEof = time(NULL);
|
||||
|
@ -7,7 +7,7 @@
|
||||
* Original author: Marco Schluessler <marco@lordzodiac.de>
|
||||
* With some input from the "subtitle plugin" by Pekka Virtanen <pekka.virtanen@sci.fi>
|
||||
*
|
||||
* $Id: dvbsubtitle.c 2.32 2012/05/08 08:17:17 kls Exp $
|
||||
* $Id: dvbsubtitle.c 2.33 2013/02/17 13:17:38 kls Exp $
|
||||
*/
|
||||
|
||||
|
||||
@ -1283,7 +1283,7 @@ void cDvbSubtitleConverter::FinishPage(cDvbSubtitlePage *Page)
|
||||
}
|
||||
cDvbSubtitleBitmaps *Bitmaps = new cDvbSubtitleBitmaps(Page->Pts(), Page->Timeout(), Areas, NumAreas, osdFactorX, osdFactorY);
|
||||
bitmaps->Add(Bitmaps);
|
||||
for (int i = 0; i < NumAreas; i++) {
|
||||
for (int i = 0; i < NumAreas; i++) {
|
||||
cSubtitleRegion *sr = Page->regions.Get(i);
|
||||
cSubtitleClut *clut = Page->GetClutById(sr->ClutId());
|
||||
if (!clut)
|
||||
|
4
epg.c
4
epg.c
@ -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.22 2012/10/04 12:21:24 kls Exp $
|
||||
* $Id: epg.c 2.23 2013/02/17 14:12:07 kls Exp $
|
||||
*/
|
||||
|
||||
#include "epg.h"
|
||||
@ -1135,7 +1135,7 @@ bool cSchedule::Read(FILE *f, cSchedules *Schedules)
|
||||
return false;
|
||||
}
|
||||
|
||||
// --- cEpgDataWriter ---------------------------------------------------------
|
||||
// --- cEpgDataWriter --------------------------------------------------------
|
||||
|
||||
class cEpgDataWriter : public cThread {
|
||||
private:
|
||||
|
4
font.h
4
font.h
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: font.h 2.6 2011/12/04 13:38:17 kls Exp $
|
||||
* $Id: font.h 2.7 2013/02/17 13:17:42 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef __FONT_H
|
||||
@ -43,7 +43,7 @@ public:
|
||||
///< Returns the font name.
|
||||
virtual int Size(void) const { return Height(); }
|
||||
///< Returns the original size as requested when the font was created.
|
||||
///< This may be different than the actual height.
|
||||
///< This may be different than the actual height.
|
||||
virtual int Width(uint c) const = 0;
|
||||
///< Returns the width of the given character in pixel.
|
||||
virtual int Width(const char *s) const = 0;
|
||||
|
5
lirc.c
5
lirc.c
@ -6,7 +6,7 @@
|
||||
*
|
||||
* LIRC support added by Carsten Koch <Carsten.Koch@icem.de> 2000-06-16.
|
||||
*
|
||||
* $Id: lirc.c 2.4 2013/02/03 11:23:18 kls Exp $
|
||||
* $Id: lirc.c 2.5 2013/02/11 15:25:42 kls Exp $
|
||||
*/
|
||||
|
||||
#include "lirc.h"
|
||||
@ -114,9 +114,10 @@ void cLircRemote::Action(void)
|
||||
repeat = true;
|
||||
timeout = Delta * 10 / 9;
|
||||
}
|
||||
if (pressed)
|
||||
if (pressed) {
|
||||
LastTime.Set();
|
||||
Put(KeyName, repeat);
|
||||
}
|
||||
}
|
||||
else if (pressed && repeat) { // the last one was a repeat, so let's generate a release
|
||||
Put(LastKeyName, false, true);
|
||||
|
23
menu.c
23
menu.c
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: menu.c 2.76 2013/02/02 14:00:39 kls Exp $
|
||||
* $Id: menu.c 2.79 2013/02/17 13:17:49 kls Exp $
|
||||
*/
|
||||
|
||||
#include "menu.h"
|
||||
@ -2306,8 +2306,10 @@ void cMenuRecordings::Set(bool Refresh)
|
||||
if (CurrentRecording && strcmp(CurrentRecording, recording->FileName()) == 0)
|
||||
SetCurrent(LastItem);
|
||||
}
|
||||
if (LastDir)
|
||||
if (LastDir) {
|
||||
LastDir->IncrementCounter(recording->IsNew());
|
||||
LastItem = LastDir;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (Refresh)
|
||||
@ -2809,7 +2811,7 @@ cMenuSetupDVB::cMenuSetupDVB(void)
|
||||
standardComplianceTexts[1] = "ANSI/SCTE";
|
||||
|
||||
SetSection(tr("DVB"));
|
||||
SetHelp(NULL, tr("Button$Audio"), tr("Button$Subtitles"), NULL);
|
||||
SetHelp(NULL, tr("Button$Audio"), tr("Button$Subtitles"), NULL);
|
||||
Setup();
|
||||
}
|
||||
|
||||
@ -2863,7 +2865,7 @@ eOSState cMenuSetupDVB::ProcessKey(eKeys Key)
|
||||
case kYellow: cRemote::Put(kSubtitles, true);
|
||||
state = osEnd;
|
||||
break;
|
||||
default: {
|
||||
default: {
|
||||
bool DoSetup = data.VideoFormat != newVideoFormat;
|
||||
DoSetup |= data.DisplaySubtitles != newDisplaySubtitles;
|
||||
if (numAudioLanguages != oldnumAudioLanguages) {
|
||||
@ -4763,9 +4765,8 @@ void cReplayControl::MarkToggle(void)
|
||||
{
|
||||
int Current, Total;
|
||||
if (GetIndex(Current, Total, true)) {
|
||||
cMark *m = marks.Get(Current);
|
||||
lastCurrent = -1; // triggers redisplay
|
||||
if (m)
|
||||
if (cMark *m = marks.Get(Current))
|
||||
marks.Del(m);
|
||||
else {
|
||||
marks.Add(Current);
|
||||
@ -4784,8 +4785,7 @@ void cReplayControl::MarkJump(bool Forward)
|
||||
int Current, Total;
|
||||
if (GetIndex(Current, Total)) {
|
||||
if (marks.Count()) {
|
||||
cMark *m = Forward ? marks.GetNext(Current) : marks.GetPrev(Current);
|
||||
if (m) {
|
||||
if (cMark *m = Forward ? marks.GetNext(Current) : marks.GetPrev(Current)) {
|
||||
Goto(m->Position(), true);
|
||||
displayFrames = true;
|
||||
return;
|
||||
@ -4801,8 +4801,7 @@ void cReplayControl::MarkMove(bool Forward)
|
||||
{
|
||||
int Current, Total;
|
||||
if (GetIndex(Current, Total)) {
|
||||
cMark *m = marks.Get(Current);
|
||||
if (m) {
|
||||
if (cMark *m = marks.Get(Current)) {
|
||||
displayFrames = true;
|
||||
int p = SkipFrames(Forward ? 1 : -1);
|
||||
cMark *m2;
|
||||
@ -4878,7 +4877,7 @@ eOSState cReplayControl::ProcessKey(eKeys Key)
|
||||
{
|
||||
if (!Active())
|
||||
return osEnd;
|
||||
if (Key == kNone)
|
||||
if (Key == kNone && !marksModified)
|
||||
marks.Update();
|
||||
if (visible) {
|
||||
if (timeoutShow && time(NULL) > timeoutShow) {
|
||||
@ -4962,7 +4961,7 @@ eOSState cReplayControl::ProcessKey(eKeys Key)
|
||||
else
|
||||
Show();
|
||||
break;
|
||||
case kBack: if (Setup.DelTimeshiftRec) {
|
||||
case kBack: if (Setup.DelTimeshiftRec) {
|
||||
cRecordControl* rc = cRecordControls::GetRecordControl(fileName);
|
||||
return rc && rc->InstantId() ? osEnd : osRecordings;
|
||||
}
|
||||
|
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: menuitems.c 2.15 2012/12/23 13:44:05 kls Exp $
|
||||
* $Id: menuitems.c 2.16 2013/02/15 14:20:29 kls Exp $
|
||||
*/
|
||||
|
||||
#include "menuitems.h"
|
||||
@ -759,7 +759,7 @@ void cMenuEditChanItem::Set(void)
|
||||
snprintf(buf, sizeof(buf), "%d %s", *value, channel ? channel->Name() : "");
|
||||
SetValue(buf);
|
||||
if (channelID)
|
||||
*channelID = channel->GetChannelID().ToString();
|
||||
*channelID = channel ? channel->GetChannelID().ToString() : "";
|
||||
}
|
||||
else if (noneString) {
|
||||
SetValue(noneString);
|
||||
|
10
osd.c
10
osd.c
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: osd.c 2.35 2013/02/08 10:16:47 kls Exp $
|
||||
* $Id: osd.c 2.38 2013/02/14 15:50:19 kls Exp $
|
||||
*/
|
||||
|
||||
#include "osd.h"
|
||||
@ -1699,7 +1699,7 @@ cPixmap *cOsd::CreatePixmap(int Layer, const cRect &ViewPort, const cRect &DrawP
|
||||
|
||||
void cOsd::DestroyPixmap(cPixmap *Pixmap)
|
||||
{
|
||||
if (isTrueColor) {
|
||||
if (Pixmap) {
|
||||
LOCK_PIXMAPS;
|
||||
for (int i = 1; i < pixmaps.Size(); i++) { // begin at 1 - don't let the background pixmap be destroyed!
|
||||
if (pixmaps[i] == Pixmap) {
|
||||
@ -1803,6 +1803,10 @@ eOsdError cOsd::SetAreas(const tArea *Areas, int NumAreas)
|
||||
if (Result == oeOk) {
|
||||
while (numBitmaps)
|
||||
delete bitmaps[--numBitmaps];
|
||||
for (int i = 0; i < pixmaps.Size(); i++) {
|
||||
delete pixmaps[i];
|
||||
pixmaps[i] = NULL;
|
||||
}
|
||||
width = height = 0;
|
||||
isTrueColor = NumAreas == 1 && Areas[0].bpp == 32;
|
||||
if (isTrueColor) {
|
||||
@ -2053,7 +2057,7 @@ int cOsdProvider::StoreImage(const cImage &Image)
|
||||
{
|
||||
if (osdProvider)
|
||||
return osdProvider->StoreImageData(Image);
|
||||
return -1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void cOsdProvider::DropImage(int ImageHandle)
|
||||
|
8
osd.h
8
osd.h
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: osd.h 2.19 2013/02/08 09:47:56 kls Exp $
|
||||
* $Id: osd.h 2.20 2013/02/12 13:39:08 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef __OSD_H
|
||||
@ -253,7 +253,7 @@ public:
|
||||
///< 0 draws the entire ellipse
|
||||
///< 1..4 draws only the first, second, third or fourth quadrant, respectively
|
||||
///< 5..8 draws the right, top, left or bottom half, respectively
|
||||
///< -1..-8 draws the inverted part of the given quadrant(s)
|
||||
///< -1..-4 draws the inverted part of the given quadrant
|
||||
///< If Quadrants is not 0, the coordinates are those of the actual area, not
|
||||
///< the full circle!
|
||||
void DrawSlope(int x1, int y1, int x2, int y2, tColor Color, int Type);
|
||||
@ -624,7 +624,7 @@ public:
|
||||
///< 0 draws the entire ellipse
|
||||
///< 1..4 draws only the first, second, third or fourth quadrant, respectively
|
||||
///< 5..8 draws the right, top, left or bottom half, respectively
|
||||
///< -1..-8 draws the inverted part of the given quadrant(s)
|
||||
///< -1..-4 draws the inverted part of the given quadrant
|
||||
///< If Quadrants is not 0, the coordinates are those of the actual area, not
|
||||
///< the full circle!
|
||||
virtual void DrawSlope(const cRect &Rect, tColor Color, int Type) = 0;
|
||||
@ -897,7 +897,7 @@ public:
|
||||
///< 0 draws the entire ellipse
|
||||
///< 1..4 draws only the first, second, third or fourth quadrant, respectively
|
||||
///< 5..8 draws the right, top, left or bottom half, respectively
|
||||
///< -1..-8 draws the inverted part of the given quadrant(s)
|
||||
///< -1..-4 draws the inverted part of the given quadrant
|
||||
///< If Quadrants is not 0, the coordinates are those of the actual area, not
|
||||
///< the full circle!
|
||||
virtual void DrawSlope(int x1, int y1, int x2, int y2, tColor Color, int Type);
|
||||
|
4
pat.h
4
pat.h
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: pat.h 2.2 2011/12/04 13:38:17 kls Exp $
|
||||
* $Id: pat.h 2.3 2013/02/16 15:20:24 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef __PAT_H
|
||||
@ -37,7 +37,7 @@ int GetCaDescriptors(int Source, int Transponder, int ServiceId, const int *CaSy
|
||||
///< Copies all available CA descriptors for the given Source, Transponder and ServiceId
|
||||
///< into the provided buffer at Data (at most BufSize bytes). Only those CA descriptors
|
||||
///< are copied that match one of the given CA system IDs.
|
||||
///< \return Returns the number of bytes copied into Data (0 if no CA descriptors are
|
||||
///< Returns the number of bytes copied into Data (0 if no CA descriptors are
|
||||
///< available), or -1 if BufSize was too small to hold all CA descriptors.
|
||||
///< The return value tells whether these CA descriptors are to be used
|
||||
///< for the individual streams.
|
||||
|
@ -1,7 +1,7 @@
|
||||
# VDR language source file.
|
||||
# Copyright (C) 2008 Klaus Schmidinger <kls@tvdr.de>
|
||||
# This file is distributed under the same license as the VDR package.
|
||||
# Arthur Konovalov <artlov@gmail.com>, 2004-2010
|
||||
# Arthur Konovalov <artlov@gmail.com>, 2004-2013
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
@ -1129,10 +1129,10 @@ msgid "Setup.Miscellaneous$Channel entry timeout (ms)"
|
||||
msgstr "Kanali sisestamise ajalimiit (ms)"
|
||||
|
||||
msgid "Setup.Miscellaneous$Remote control repeat delay (ms)"
|
||||
msgstr ""
|
||||
msgstr "Kaugjuhtimispuldi kordamise viide (ms)"
|
||||
|
||||
msgid "Setup.Miscellaneous$Remote control repeat delta (ms)"
|
||||
msgstr ""
|
||||
msgstr "Kaugjuhtimispuldi kordamise delta (ms)"
|
||||
|
||||
msgid "Setup.Miscellaneous$Initial channel"
|
||||
msgstr "Kanal käivitamisel"
|
||||
|
606
po/fr_FR.po
606
po/fr_FR.po
File diff suppressed because it is too large
Load Diff
@ -5,14 +5,14 @@
|
||||
# Antonio Ospite <ospite@studenti.unina.it>, 2003, 2006
|
||||
# Sean Carlos <seanc@libero.it>, 2005
|
||||
# Nino Gerbino <ngerb@interfree.it>, 2006
|
||||
# Diego Pierotto <vdr-italian@tiscali.it>, 2007, 2008, 2010
|
||||
# Diego Pierotto <vdr-italian@tiscali.it>, 2007-2010, 2012, 2013
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: VDR 1.6.0\n"
|
||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||
"POT-Creation-Date: 2013-02-03 16:46+0100\n"
|
||||
"PO-Revision-Date: 2012-12-22 19:00+0100\n"
|
||||
"PO-Revision-Date: 2013-02-11 23:46+0100\n"
|
||||
"Last-Translator: Diego Pierotto <vdr-italian@tiscali.it>\n"
|
||||
"Language-Team: Italian <vdr@linuxtv.org>\n"
|
||||
"Language: it\n"
|
||||
@ -1136,10 +1136,10 @@ msgid "Setup.Miscellaneous$Channel entry timeout (ms)"
|
||||
msgstr "Scadenza voce canale (ms)"
|
||||
|
||||
msgid "Setup.Miscellaneous$Remote control repeat delay (ms)"
|
||||
msgstr ""
|
||||
msgstr "Ritardo ripetizione controllo remoto (ms)"
|
||||
|
||||
msgid "Setup.Miscellaneous$Remote control repeat delta (ms)"
|
||||
msgstr ""
|
||||
msgstr "Intervallo ripetizione controllo remoto (ms)"
|
||||
|
||||
msgid "Setup.Miscellaneous$Initial channel"
|
||||
msgstr "Canale iniziale"
|
||||
|
62
po/lt_LT.po
62
po/lt_LT.po
@ -1,11 +1,11 @@
|
||||
# VDR language source file.
|
||||
# Copyright (C) 2009 Klaus Schmidinger <kls@tvdr.de>
|
||||
# This file is distributed under the same license as the VDR package.
|
||||
# Valdemaras Pipiras <varas@ambernet.lt>, 2009, 2010.
|
||||
# Valdemaras Pipiras <varas@ambernet.lt>, 2009, 2010, 2013.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: VDR 1.7.16\n"
|
||||
"Project-Id-Version: VDR 1.7.37\n"
|
||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||
"POT-Creation-Date: 2013-02-03 16:46+0100\n"
|
||||
"PO-Revision-Date: 2010-10-30 11:55+0200\n"
|
||||
@ -26,10 +26,10 @@ msgid "Can't start Transfer Mode!"
|
||||
msgstr "Negali pradėti perdavimo"
|
||||
|
||||
msgid "off"
|
||||
msgstr "įjungti"
|
||||
msgstr "išjungti"
|
||||
|
||||
msgid "on"
|
||||
msgstr "išjungti"
|
||||
msgstr "įjungti"
|
||||
|
||||
msgid "auto"
|
||||
msgstr "auto"
|
||||
@ -74,7 +74,7 @@ msgid "Rolloff"
|
||||
msgstr "Rolloff"
|
||||
|
||||
msgid "PlpId"
|
||||
msgstr ""
|
||||
msgstr "PlpId"
|
||||
|
||||
msgid "Starting EPG scan"
|
||||
msgstr "Pradedamas EPG skanavimas"
|
||||
@ -411,7 +411,7 @@ msgid "Key$Info"
|
||||
msgstr "Info"
|
||||
|
||||
msgid "Key$Play/Pause"
|
||||
msgstr ""
|
||||
msgstr "Groti/Pristabdyti"
|
||||
|
||||
msgid "Key$Play"
|
||||
msgstr "Grona"
|
||||
@ -646,10 +646,10 @@ msgid "Button$Folder"
|
||||
msgstr "Katalogas"
|
||||
|
||||
msgid "Button$Single"
|
||||
msgstr ""
|
||||
msgstr "Vienas"
|
||||
|
||||
msgid "Button$Repeating"
|
||||
msgstr ""
|
||||
msgstr "Kartotinas"
|
||||
|
||||
msgid "First day"
|
||||
msgstr "Pirma diena"
|
||||
@ -745,7 +745,7 @@ msgid "Delete recording?"
|
||||
msgstr "Ištrinti įrašą?"
|
||||
|
||||
msgid "Recording is being edited - really delete?"
|
||||
msgstr ""
|
||||
msgstr "Įrašas yra redaguojamas - ar tikrai norite ištrinti?"
|
||||
|
||||
msgid "Error while deleting recording!"
|
||||
msgstr "Klaida trinant įrašą!"
|
||||
@ -850,16 +850,16 @@ msgid "Setup.OSD$Number keys for characters"
|
||||
msgstr "Skaičių mygtukai simboliams"
|
||||
|
||||
msgid "Setup.OSD$Color key 0"
|
||||
msgstr ""
|
||||
msgstr "Spalvotas mygtukas 0"
|
||||
|
||||
msgid "Setup.OSD$Color key 1"
|
||||
msgstr ""
|
||||
msgstr "Spalvotas mygtukas 1"
|
||||
|
||||
msgid "Setup.OSD$Color key 2"
|
||||
msgstr ""
|
||||
msgstr "Spalvotas mygtukas 2"
|
||||
|
||||
msgid "Setup.OSD$Color key 3"
|
||||
msgstr ""
|
||||
msgstr "Spalvotas mygtukas 3"
|
||||
|
||||
msgid "EPG"
|
||||
msgstr "Elektroninis programų gidas (EPG)"
|
||||
@ -930,7 +930,7 @@ msgid "Setup.DVB$Primary DVB interface"
|
||||
msgstr "Pirminiė DVB įvestis"
|
||||
|
||||
msgid "Setup.DVB$Standard compliance"
|
||||
msgstr ""
|
||||
msgstr "Standarto atitikimas"
|
||||
|
||||
msgid "Setup.DVB$Video format"
|
||||
msgstr "Video formatas"
|
||||
@ -985,10 +985,10 @@ msgstr "Aukštasis LNB dažnis (MHz)"
|
||||
|
||||
#, c-format
|
||||
msgid "Setup.LNB$Device %d connected to sat cable"
|
||||
msgstr ""
|
||||
msgstr "Įrenginys %d prijungtas prie sat kabelio"
|
||||
|
||||
msgid "Setup.LNB$own"
|
||||
msgstr ""
|
||||
msgstr "savas"
|
||||
|
||||
msgid "CAM reset"
|
||||
msgstr "Dekodavimo modulis (CAM) perkrautas"
|
||||
@ -1078,7 +1078,7 @@ msgid "Setup.Recording$Instant rec. time (min)"
|
||||
msgstr "Rankiniu būdu vykdomo įrašo laikas (min)"
|
||||
|
||||
msgid "Setup.Recording$present event"
|
||||
msgstr ""
|
||||
msgstr "esamas įvykis"
|
||||
|
||||
msgid "Setup.Recording$Max. video file size (MB)"
|
||||
msgstr "Maks. video failo dydis (MB)"
|
||||
@ -1099,13 +1099,13 @@ msgid "Setup.Replay$Show replay mode"
|
||||
msgstr "Rodyti pakartojimo ręžimą"
|
||||
|
||||
msgid "Setup.Replay$Show remaining time"
|
||||
msgstr ""
|
||||
msgstr "Rodyti kiek liko laiko iki pabaigos"
|
||||
|
||||
msgid "Setup.Replay$Progress display time (s)"
|
||||
msgstr ""
|
||||
msgstr "Progreso rodymo laikas (s)"
|
||||
|
||||
msgid "Setup.Replay$Pause replay when setting mark"
|
||||
msgstr ""
|
||||
msgstr "Pristabdyti pakartojimą kai vyksta žymėjimas"
|
||||
|
||||
msgid "Setup.Replay$Resume ID"
|
||||
msgstr "Kūrinio ID"
|
||||
@ -1129,10 +1129,10 @@ msgid "Setup.Miscellaneous$Channel entry timeout (ms)"
|
||||
msgstr "Užlaikymas (ms) kanalo įvedimui"
|
||||
|
||||
msgid "Setup.Miscellaneous$Remote control repeat delay (ms)"
|
||||
msgstr ""
|
||||
msgstr "Distancinio pulto komandų pakartojimų užlaikymas (ms)"
|
||||
|
||||
msgid "Setup.Miscellaneous$Remote control repeat delta (ms)"
|
||||
msgstr ""
|
||||
msgstr "Laiko tarpai tarp distancinio pulto siunčiamų komandų (ms)"
|
||||
|
||||
msgid "Setup.Miscellaneous$Initial channel"
|
||||
msgstr "Kanalas įjungimo metu"
|
||||
@ -1147,7 +1147,7 @@ msgid "Setup.Miscellaneous$Channels wrap"
|
||||
msgstr "Kanalų pridengimas"
|
||||
|
||||
msgid "Setup.Miscellaneous$Show channel names with source"
|
||||
msgstr ""
|
||||
msgstr "Kanalo pavadinimuose rodyti šaltinius"
|
||||
|
||||
msgid "Setup.Miscellaneous$Emergency exit"
|
||||
msgstr "Avarinis išėjimas"
|
||||
@ -1226,7 +1226,7 @@ msgid "No editing marks defined!"
|
||||
msgstr "Nenustatytos koregavimo žymės!"
|
||||
|
||||
msgid "No editing sequences defined!"
|
||||
msgstr ""
|
||||
msgstr "Nenustatyta koregavimo saka!"
|
||||
|
||||
msgid "Can't start editing process!"
|
||||
msgstr "Negali pradėti koregavimo!"
|
||||
@ -1271,7 +1271,7 @@ msgid "Index file regeneration complete"
|
||||
msgstr "Index failo pergeneravimas baigtas"
|
||||
|
||||
msgid "Index file regeneration failed!"
|
||||
msgstr ""
|
||||
msgstr "Nepavyko pergeneruoti index failo!"
|
||||
|
||||
msgid "Can't shutdown - option '-s' not given!"
|
||||
msgstr "Sistemos negalima išjungti, nes starto metu nebuvo komandinėj eilutėj paduota savybė '-s'!"
|
||||
@ -1310,22 +1310,22 @@ msgid "Classic VDR"
|
||||
msgstr "Klasikinis VDR"
|
||||
|
||||
msgid "DISK"
|
||||
msgstr ""
|
||||
msgstr "DISKAS"
|
||||
|
||||
msgid "LOAD"
|
||||
msgstr ""
|
||||
msgstr "APKROVA"
|
||||
|
||||
msgid "TIMERS"
|
||||
msgstr ""
|
||||
msgstr "LAIKMAČIAI"
|
||||
|
||||
msgid "DEVICES"
|
||||
msgstr ""
|
||||
msgstr "ĮRENGINIAI"
|
||||
|
||||
msgid "LIVE"
|
||||
msgstr ""
|
||||
msgstr "GYVAI"
|
||||
|
||||
msgid "PLAY"
|
||||
msgstr ""
|
||||
msgstr "GROTI"
|
||||
|
||||
msgid "ST:TNG Panels"
|
||||
msgstr "ST:TNG Skydeliai"
|
||||
|
16
po/mk_MK.po
16
po/mk_MK.po
@ -1,7 +1,7 @@
|
||||
# VDR language source file.
|
||||
# Copyright (C) 2008 Klaus Schmidinger <kls@tvdr.de>
|
||||
# This file is distributed under the same license as the VDR package.
|
||||
# Dimitar Petrovski <dimeptr@gmail.com>, 2009
|
||||
# Dimitar Petrovski <dimeptr@gmail.com>, 2009, 2012, 2013
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
@ -412,7 +412,7 @@ msgid "Key$Info"
|
||||
msgstr "Инфо"
|
||||
|
||||
msgid "Key$Play/Pause"
|
||||
msgstr ""
|
||||
msgstr "Старт/Пауза"
|
||||
|
||||
msgid "Key$Play"
|
||||
msgstr "Старт"
|
||||
@ -1103,10 +1103,10 @@ msgid "Setup.Replay$Show remaining time"
|
||||
msgstr "Прикажи преостанато време"
|
||||
|
||||
msgid "Setup.Replay$Progress display time (s)"
|
||||
msgstr ""
|
||||
msgstr "Време на прикажување на прогрес (сек)"
|
||||
|
||||
msgid "Setup.Replay$Pause replay when setting mark"
|
||||
msgstr ""
|
||||
msgstr "Паузирај репродукција кога се внесува ознака"
|
||||
|
||||
msgid "Setup.Replay$Resume ID"
|
||||
msgstr "ID на продолжеток"
|
||||
@ -1130,10 +1130,10 @@ msgid "Setup.Miscellaneous$Channel entry timeout (ms)"
|
||||
msgstr "Тајмаут за внес на канал (ms)"
|
||||
|
||||
msgid "Setup.Miscellaneous$Remote control repeat delay (ms)"
|
||||
msgstr ""
|
||||
msgstr "Оддолжување на повторување на даљинско (ms)"
|
||||
|
||||
msgid "Setup.Miscellaneous$Remote control repeat delta (ms)"
|
||||
msgstr ""
|
||||
msgstr "Делта на повторување на даљинско (ms)"
|
||||
|
||||
msgid "Setup.Miscellaneous$Initial channel"
|
||||
msgstr "Почетен канал"
|
||||
@ -1221,7 +1221,7 @@ msgstr "Избриши временски поместена снимка?"
|
||||
|
||||
#. TRANSLATORS: note the trailing blank!
|
||||
msgid "Jump: "
|
||||
msgstr "Скокни:"
|
||||
msgstr "Скокни: "
|
||||
|
||||
msgid "No editing marks defined!"
|
||||
msgstr "Нема одредено ознаки за сечење!"
|
||||
@ -1305,7 +1305,7 @@ msgstr "сеедно рестартирај?"
|
||||
|
||||
#. TRANSLATORS: note the trailing blank!
|
||||
msgid "Volume "
|
||||
msgstr "Глас"
|
||||
msgstr "Глас "
|
||||
|
||||
msgid "Classic VDR"
|
||||
msgstr "Класичен VDR"
|
||||
|
35
po/ro_RO.po
35
po/ro_RO.po
@ -2,22 +2,21 @@
|
||||
# Copyright (C) 2008 Klaus Schmidinger <kls@tvdr.de>
|
||||
# This file is distributed under the same license as the VDR package.
|
||||
# Paul Lacatus <paul@campina.iiruc.ro>, 2002
|
||||
# Lucian Muresan <lucianm@users.sourceforge.net>, 2004, 2005, 2006, 2008, 2010, 2011, 2012
|
||||
# Lucian Muresan <lucianm@users.sourceforge.net>, 2004-2006, 2008, 2010-2013
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: VDR 1.7.12\n"
|
||||
"Project-Id-Version: VDR 1.7.37\n"
|
||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||
"POT-Creation-Date: 2013-02-03 16:46+0100\n"
|
||||
"PO-Revision-Date: 2012-11-05 01:28+0100\n"
|
||||
"Last-Translator: Lucian Muresan <lucianm@users.sourceforge.net>\n"
|
||||
"PO-Revision-Date: 2013-02-09 23:01+0100\n"
|
||||
"Last-Translator: Lucian Muresan <lucianm@users.sorceforge.net>\n"
|
||||
"Language-Team: Romanian <vdr@linuxtv.org>\n"
|
||||
"Language: ro\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Poedit-Language: Romanian\n"
|
||||
"X-Poedit-Country: ROMANIA\n"
|
||||
"X-Generator: Poedit 1.5.5\n"
|
||||
|
||||
msgid "*** Invalid Channel ***"
|
||||
msgstr "*** Canal invalid ***"
|
||||
@ -414,7 +413,7 @@ msgid "Key$Info"
|
||||
msgstr "Info"
|
||||
|
||||
msgid "Key$Play/Pause"
|
||||
msgstr ""
|
||||
msgstr "Redare/Pauză"
|
||||
|
||||
msgid "Key$Play"
|
||||
msgstr "Redare"
|
||||
@ -682,7 +681,7 @@ msgid "Button$Timer"
|
||||
msgstr "Timer"
|
||||
|
||||
msgid "Button$Record"
|
||||
msgstr "Înregistr."
|
||||
msgstr "Înregistrează"
|
||||
|
||||
msgid "Button$Switch"
|
||||
msgstr "Comută"
|
||||
@ -733,7 +732,7 @@ msgid "Button$Play"
|
||||
msgstr "Redare"
|
||||
|
||||
msgid "Button$Rewind"
|
||||
msgstr "Înapoi"
|
||||
msgstr "De la capăt"
|
||||
|
||||
msgid "Recordings"
|
||||
msgstr "Înregistrări"
|
||||
@ -760,7 +759,7 @@ msgid "never"
|
||||
msgstr "niciodată"
|
||||
|
||||
msgid "skin dependent"
|
||||
msgstr "dep. de skin"
|
||||
msgstr "dependent de skin"
|
||||
|
||||
msgid "always"
|
||||
msgstr "întotdeauna"
|
||||
@ -1105,10 +1104,10 @@ msgid "Setup.Replay$Show remaining time"
|
||||
msgstr "Arată timpul rămas"
|
||||
|
||||
msgid "Setup.Replay$Progress display time (s)"
|
||||
msgstr ""
|
||||
msgstr "Durata afișării indicatorului de progres (s) "
|
||||
|
||||
msgid "Setup.Replay$Pause replay when setting mark"
|
||||
msgstr ""
|
||||
msgstr "Pauză la punerea marcajului de montaj"
|
||||
|
||||
msgid "Setup.Replay$Resume ID"
|
||||
msgstr "Identificator continuare"
|
||||
@ -1132,10 +1131,10 @@ msgid "Setup.Miscellaneous$Channel entry timeout (ms)"
|
||||
msgstr "Timeout la introducerea canalului (ms)"
|
||||
|
||||
msgid "Setup.Miscellaneous$Remote control repeat delay (ms)"
|
||||
msgstr ""
|
||||
msgstr "Întârzierea repetării semnaluilui telecomenzii (ms)"
|
||||
|
||||
msgid "Setup.Miscellaneous$Remote control repeat delta (ms)"
|
||||
msgstr ""
|
||||
msgstr "Diferența repetării semnaluilui telecomenzii (ms)"
|
||||
|
||||
msgid "Setup.Miscellaneous$Initial channel"
|
||||
msgstr "Canalul de pornire"
|
||||
@ -1188,7 +1187,7 @@ msgid "Button$Stop"
|
||||
msgstr "Stop"
|
||||
|
||||
msgid "Button$Resume"
|
||||
msgstr "Continuare"
|
||||
msgstr "Continuă redarea"
|
||||
|
||||
#. TRANSLATORS: note the leading blank!
|
||||
msgid " Cancel editing"
|
||||
@ -1216,7 +1215,7 @@ msgid "No free DVB device to record!"
|
||||
msgstr "Nu mai sunt receptoare DVB disponibile pentru înregistrare!"
|
||||
|
||||
msgid "Pausing live video..."
|
||||
msgstr "Trec în pauză emisiunea transmisă..."
|
||||
msgstr "Înregistrez emisiunea transmisă..."
|
||||
|
||||
msgid "Delete timeshift recording?"
|
||||
msgstr "Şterg înregistrarea pentru vizionare decalată?"
|
||||
@ -1229,7 +1228,7 @@ msgid "No editing marks defined!"
|
||||
msgstr "Nu s-au pus marcaje de montaj pentru această înregistrare"
|
||||
|
||||
msgid "No editing sequences defined!"
|
||||
msgstr ""
|
||||
msgstr "Nu s-au definit secvențe pentru montaj!"
|
||||
|
||||
msgid "Can't start editing process!"
|
||||
msgstr "Nu pot porni montajul înregistrării!"
|
||||
@ -1256,7 +1255,7 @@ msgid "Button$Insert"
|
||||
msgstr "Inserează"
|
||||
|
||||
msgid "Plugin"
|
||||
msgstr "Plugin (modul adiţional)"
|
||||
msgstr "Plugin"
|
||||
|
||||
msgid "Up/Dn for new location - OK to move"
|
||||
msgstr "Sus/Jos pentru noua locaţie - OK pentru a muta"
|
||||
|
109
po/uk_UA.po
109
po/uk_UA.po
@ -1,20 +1,21 @@
|
||||
# VDR language source file.
|
||||
# Copyright (C) 2008 Klaus Schmidinger <kls@tvdr.de>
|
||||
# This file is distributed under the same license as the VDR package.
|
||||
# Yarema Aka Knedlyk <yupadmin@gmail.com>, 2007, 2008, 2010
|
||||
# Yarema Aka Knedlyk <yupadmin@gmail.com>, 2007-2010, 2013
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: VDR 1.7.7\n"
|
||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||
"POT-Creation-Date: 2013-02-03 16:46+0100\n"
|
||||
"PO-Revision-Date: 2010-04-25 16:35+0200\n"
|
||||
"PO-Revision-Date: 2013-02-09 16:00+0100\n"
|
||||
"Last-Translator: Yarema aka Knedlyk <yupadmin@gmail.com>\n"
|
||||
"Language-Team: Ukrainian <vdr@linuxtv.org>\n"
|
||||
"Language: uk\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 1.5.4\n"
|
||||
|
||||
msgid "*** Invalid Channel ***"
|
||||
msgstr "*** Неправильний канал ***"
|
||||
@ -50,10 +51,10 @@ msgid "Inversion"
|
||||
msgstr "Інверсія"
|
||||
|
||||
msgid "CoderateH"
|
||||
msgstr "CoderateH"
|
||||
msgstr "Шв.кодуванняH"
|
||||
|
||||
msgid "CoderateL"
|
||||
msgstr "CoderateL"
|
||||
msgstr "Шв.кодуванняL"
|
||||
|
||||
msgid "Modulation"
|
||||
msgstr "Модуляція"
|
||||
@ -74,7 +75,7 @@ msgid "Rolloff"
|
||||
msgstr "Крен"
|
||||
|
||||
msgid "PlpId"
|
||||
msgstr ""
|
||||
msgstr "PlpId"
|
||||
|
||||
msgid "Starting EPG scan"
|
||||
msgstr "Починаю EPG-сканування"
|
||||
@ -128,7 +129,7 @@ msgid "Content$Game Show/Quiz/Contest"
|
||||
msgstr "Ігрове шоу/Тести"
|
||||
|
||||
msgid "Content$Variety Show"
|
||||
msgstr "Вар’єте"
|
||||
msgstr "Вар'єте"
|
||||
|
||||
msgid "Content$Talk Show"
|
||||
msgstr "Ток шоу"
|
||||
@ -411,7 +412,7 @@ msgid "Key$Info"
|
||||
msgstr "Інфо"
|
||||
|
||||
msgid "Key$Play/Pause"
|
||||
msgstr ""
|
||||
msgstr "Програвати/Пауза"
|
||||
|
||||
msgid "Key$Play"
|
||||
msgstr "Програвання"
|
||||
@ -456,7 +457,7 @@ msgid "Key$Volume-"
|
||||
msgstr "Гучність -"
|
||||
|
||||
msgid "Key$Mute"
|
||||
msgstr "Виключити звук"
|
||||
msgstr "Без звуку"
|
||||
|
||||
msgid "Key$Audio"
|
||||
msgstr "Мова"
|
||||
@ -588,29 +589,29 @@ msgid "Delete channel?"
|
||||
msgstr "Видалити канал?"
|
||||
|
||||
msgid "Edit folder"
|
||||
msgstr "Редагувати каталог"
|
||||
msgstr "Редагувати теку"
|
||||
|
||||
msgid "New folder"
|
||||
msgstr "Новий каталог"
|
||||
msgstr "Нова тека"
|
||||
|
||||
msgid "Sub folder"
|
||||
msgstr "Підкаталог"
|
||||
msgstr "Підтека"
|
||||
|
||||
msgid "Folder name already exists!"
|
||||
msgstr "Назва каталогу вже існує!"
|
||||
msgstr "Назва теки вже існує!"
|
||||
|
||||
#, c-format
|
||||
msgid "Folder name must not contain '%c'!"
|
||||
msgstr "Назва каталогу не повинна містити '%c'!"
|
||||
msgstr "Назва теки не повинна містити '%c'!"
|
||||
|
||||
msgid "Button$Select"
|
||||
msgstr "Вибрати"
|
||||
|
||||
msgid "Delete folder and all sub folders?"
|
||||
msgstr "Видалити каталог і всі підкаталоги?"
|
||||
msgstr "Видалити теку і всі підтеки?"
|
||||
|
||||
msgid "Delete folder?"
|
||||
msgstr "Видалити каталог?"
|
||||
msgstr "Видалити теку?"
|
||||
|
||||
msgid "Edit timer"
|
||||
msgstr "Налаштування таймера"
|
||||
@ -643,19 +644,19 @@ msgid "File"
|
||||
msgstr "Файл"
|
||||
|
||||
msgid "Button$Folder"
|
||||
msgstr "Каталог"
|
||||
msgstr "Тека"
|
||||
|
||||
msgid "Button$Single"
|
||||
msgstr ""
|
||||
msgstr "Одинарне"
|
||||
|
||||
msgid "Button$Repeating"
|
||||
msgstr ""
|
||||
msgstr "Повтор"
|
||||
|
||||
msgid "First day"
|
||||
msgstr "Перший день"
|
||||
|
||||
msgid "Select folder"
|
||||
msgstr "Вибрати каталог"
|
||||
msgstr "Вибрати теку"
|
||||
|
||||
msgid "Timers"
|
||||
msgstr "Таймери"
|
||||
@ -745,7 +746,7 @@ msgid "Delete recording?"
|
||||
msgstr "Витерти запис?"
|
||||
|
||||
msgid "Recording is being edited - really delete?"
|
||||
msgstr ""
|
||||
msgstr "Запис редагується - дійсно вилучити?"
|
||||
|
||||
msgid "Error while deleting recording!"
|
||||
msgstr "Помилка видалення запису!"
|
||||
@ -790,28 +791,28 @@ msgid "Setup.OSD$Message time (s)"
|
||||
msgstr "Час показу повідомлень (сек)"
|
||||
|
||||
msgid "Setup.OSD$Use small font"
|
||||
msgstr "Викор. малий фонт"
|
||||
msgstr "Викор. малий шрифт"
|
||||
|
||||
msgid "Setup.OSD$Anti-alias"
|
||||
msgstr "Згладжування фонтів"
|
||||
msgstr "Згладжування шрифтів"
|
||||
|
||||
msgid "Setup.OSD$Default font"
|
||||
msgstr "Стандартний фонт"
|
||||
msgstr "Стандартний шрифт"
|
||||
|
||||
msgid "Setup.OSD$Small font"
|
||||
msgstr "Малий фонт"
|
||||
msgstr "Малий шрифт"
|
||||
|
||||
msgid "Setup.OSD$Fixed font"
|
||||
msgstr "Фіксований фонт"
|
||||
msgstr "Фіксований шрифт"
|
||||
|
||||
msgid "Setup.OSD$Default font size (%)"
|
||||
msgstr "Розмір типового фонта (%)"
|
||||
msgstr "Розмір типового шрифта (%)"
|
||||
|
||||
msgid "Setup.OSD$Small font size (%)"
|
||||
msgstr "Размір малого фонта (%)"
|
||||
msgstr "Розмір малого шрифта (%)"
|
||||
|
||||
msgid "Setup.OSD$Fixed font size (%)"
|
||||
msgstr "Размір фіксованого фонта (%)"
|
||||
msgstr "Розмір фіксованого шрифта (%)"
|
||||
|
||||
msgid "Setup.OSD$Channel info position"
|
||||
msgstr "Положення інформації про канал"
|
||||
@ -841,25 +842,25 @@ msgid "Setup.OSD$Menu key closes"
|
||||
msgstr "Кнопку Меню закрити"
|
||||
|
||||
msgid "Setup.OSD$Recording directories"
|
||||
msgstr "Каталоги зберігання записів"
|
||||
msgstr "Теки зберігання записів"
|
||||
|
||||
msgid "Setup.OSD$Folders in timer menu"
|
||||
msgstr "Каталоги в меню таймера"
|
||||
msgstr "Теки в меню таймера"
|
||||
|
||||
msgid "Setup.OSD$Number keys for characters"
|
||||
msgstr ""
|
||||
msgstr "Кількість клавіш для символів"
|
||||
|
||||
msgid "Setup.OSD$Color key 0"
|
||||
msgstr ""
|
||||
msgstr "Кольорова кнопка 0"
|
||||
|
||||
msgid "Setup.OSD$Color key 1"
|
||||
msgstr ""
|
||||
msgstr "Кольорова кнопка 1"
|
||||
|
||||
msgid "Setup.OSD$Color key 2"
|
||||
msgstr ""
|
||||
msgstr "Кольорова кнопка 2"
|
||||
|
||||
msgid "Setup.OSD$Color key 3"
|
||||
msgstr ""
|
||||
msgstr "Кольорова кнопка 3"
|
||||
|
||||
msgid "EPG"
|
||||
msgstr "Телегід (EPG)"
|
||||
@ -930,7 +931,7 @@ msgid "Setup.DVB$Primary DVB interface"
|
||||
msgstr "Основний DVB-пристрій"
|
||||
|
||||
msgid "Setup.DVB$Standard compliance"
|
||||
msgstr ""
|
||||
msgstr "Відповідність стандарту"
|
||||
|
||||
msgid "Setup.DVB$Video format"
|
||||
msgstr "Формат відео"
|
||||
@ -985,10 +986,10 @@ msgstr "Верхня частота конвертера (МГц)"
|
||||
|
||||
#, c-format
|
||||
msgid "Setup.LNB$Device %d connected to sat cable"
|
||||
msgstr ""
|
||||
msgstr "Пристрій %d під’єднано до сателітарного кабелю"
|
||||
|
||||
msgid "Setup.LNB$own"
|
||||
msgstr ""
|
||||
msgstr "власне"
|
||||
|
||||
msgid "CAM reset"
|
||||
msgstr "Перезавантаження CAM"
|
||||
@ -1009,7 +1010,7 @@ msgid "Button$Reset"
|
||||
msgstr "Скинути"
|
||||
|
||||
msgid "Opening CAM menu..."
|
||||
msgstr "Відкриваю меню CAM-модуля..."
|
||||
msgstr "Відкривання меню CAM-модуля..."
|
||||
|
||||
msgid "Can't open CAM menu!"
|
||||
msgstr "Меню CAM-модуля недоступне!"
|
||||
@ -1078,7 +1079,7 @@ msgid "Setup.Recording$Instant rec. time (min)"
|
||||
msgstr "Протяжність ручного запису (хв)"
|
||||
|
||||
msgid "Setup.Recording$present event"
|
||||
msgstr ""
|
||||
msgstr "теперішня передача"
|
||||
|
||||
msgid "Setup.Recording$Max. video file size (MB)"
|
||||
msgstr "Макс. размір відеофайлу (Мб)"
|
||||
@ -1099,13 +1100,13 @@ msgid "Setup.Replay$Show replay mode"
|
||||
msgstr "Віображати режим перегляду"
|
||||
|
||||
msgid "Setup.Replay$Show remaining time"
|
||||
msgstr ""
|
||||
msgstr "Показати час що зашився"
|
||||
|
||||
msgid "Setup.Replay$Progress display time (s)"
|
||||
msgstr ""
|
||||
msgstr "Час показу індикатора (с)"
|
||||
|
||||
msgid "Setup.Replay$Pause replay when setting mark"
|
||||
msgstr ""
|
||||
msgstr "Пауза програвання при встановленні мітки"
|
||||
|
||||
msgid "Setup.Replay$Resume ID"
|
||||
msgstr "ID продовження"
|
||||
@ -1129,10 +1130,10 @@ msgid "Setup.Miscellaneous$Channel entry timeout (ms)"
|
||||
msgstr "Затримка часу для впровадження каналу (ms)"
|
||||
|
||||
msgid "Setup.Miscellaneous$Remote control repeat delay (ms)"
|
||||
msgstr ""
|
||||
msgstr "Затримка повтору кнопок пульта (мс)"
|
||||
|
||||
msgid "Setup.Miscellaneous$Remote control repeat delta (ms)"
|
||||
msgstr ""
|
||||
msgstr "Різниця повторів кнопок пульта (мс)"
|
||||
|
||||
msgid "Setup.Miscellaneous$Initial channel"
|
||||
msgstr "Канал при включенні"
|
||||
@ -1147,7 +1148,7 @@ msgid "Setup.Miscellaneous$Channels wrap"
|
||||
msgstr "Кінець каналів"
|
||||
|
||||
msgid "Setup.Miscellaneous$Show channel names with source"
|
||||
msgstr ""
|
||||
msgstr "Показати назву каналу з джерелом"
|
||||
|
||||
msgid "Setup.Miscellaneous$Emergency exit"
|
||||
msgstr "Аварійний вихід"
|
||||
@ -1226,7 +1227,7 @@ msgid "No editing marks defined!"
|
||||
msgstr "Не задано міток для монтажу!"
|
||||
|
||||
msgid "No editing sequences defined!"
|
||||
msgstr ""
|
||||
msgstr "Не задано послідовності монтажу!"
|
||||
|
||||
msgid "Can't start editing process!"
|
||||
msgstr "Неможливо почати монтаж запису!"
|
||||
@ -1271,7 +1272,7 @@ msgid "Index file regeneration complete"
|
||||
msgstr "Регенерацію файлу індексу завершено"
|
||||
|
||||
msgid "Index file regeneration failed!"
|
||||
msgstr ""
|
||||
msgstr "Генерація індексного файлу не вдалася!"
|
||||
|
||||
msgid "Can't shutdown - option '-s' not given!"
|
||||
msgstr "Виключенння неможливе - не задано параметр '-s'!"
|
||||
@ -1310,22 +1311,22 @@ msgid "Classic VDR"
|
||||
msgstr "Класичний VDR"
|
||||
|
||||
msgid "DISK"
|
||||
msgstr ""
|
||||
msgstr "ДИСК"
|
||||
|
||||
msgid "LOAD"
|
||||
msgstr ""
|
||||
msgstr "ЗАВАНТАЖЕННЯ"
|
||||
|
||||
msgid "TIMERS"
|
||||
msgstr ""
|
||||
msgstr "ТАЙМЕРИ"
|
||||
|
||||
msgid "DEVICES"
|
||||
msgstr ""
|
||||
msgstr "ПРИСТРОЇ"
|
||||
|
||||
msgid "LIVE"
|
||||
msgstr ""
|
||||
msgstr "ЕФІР"
|
||||
|
||||
msgid "PLAY"
|
||||
msgstr ""
|
||||
msgstr "ПРОГРАВАННЯ"
|
||||
|
||||
msgid "ST:TNG Panels"
|
||||
msgstr "ST:TNG панелі"
|
||||
|
15
recording.c
15
recording.c
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: recording.c 2.86 2013/02/08 09:02:07 kls Exp $
|
||||
* $Id: recording.c 2.88 2013/02/17 13:17:55 kls Exp $
|
||||
*/
|
||||
|
||||
#include "recording.h"
|
||||
@ -1103,7 +1103,7 @@ bool cRecording::WriteInfo(void)
|
||||
return true;
|
||||
}
|
||||
|
||||
void cRecording::SetStartTime(time_t Start)
|
||||
void cRecording::SetStartTime(time_t Start)
|
||||
{
|
||||
start = Start;
|
||||
free(fileName);
|
||||
@ -1506,6 +1506,15 @@ bool cMarks::Update(void)
|
||||
return false;
|
||||
}
|
||||
|
||||
bool cMarks::Save(void)
|
||||
{
|
||||
if (cConfig<cMark>::Save()) {
|
||||
lastFileTime = LastModifiedTime(fileName);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void cMarks::Align(void)
|
||||
{
|
||||
cIndexFile IndexFile(recordingFileName, false, isPesRecording);
|
||||
@ -2127,7 +2136,7 @@ int cIndexFile::GetLength(const char *FileName, bool IsPesRecording)
|
||||
return -1;
|
||||
}
|
||||
|
||||
bool GenerateIndex(const char *FileName)
|
||||
bool GenerateIndex(const char *FileName)
|
||||
{
|
||||
if (DirectoryOk(FileName)) {
|
||||
cRecording Recording(FileName);
|
||||
|
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: recording.h 2.42 2013/02/07 13:42:17 kls Exp $
|
||||
* $Id: recording.h 2.44 2013/02/14 15:13:14 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef __RECORDING_H
|
||||
@ -19,8 +19,6 @@
|
||||
#include "tools.h"
|
||||
|
||||
#define FOLDERDELIMCHAR '~'
|
||||
#define TIMERMACRO_TITLE "TITLE"
|
||||
#define TIMERMACRO_EPISODE "EPISODE"
|
||||
|
||||
extern int DirectoryPathMax;
|
||||
extern int DirectoryNameMax;
|
||||
@ -234,6 +232,7 @@ private:
|
||||
public:
|
||||
bool Load(const char *RecordingFileName, double FramesPerSecond = DEFAULTFRAMESPERSECOND, bool IsPesRecording = false);
|
||||
bool Update(void);
|
||||
bool Save(void);
|
||||
void Align(void);
|
||||
void Sort(void);
|
||||
void Add(int Position);
|
||||
|
4
remux.c
4
remux.c
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: remux.c 2.73 2012/11/25 14:16:11 kls Exp $
|
||||
* $Id: remux.c 2.74 2013/02/17 13:17:58 kls Exp $
|
||||
*/
|
||||
|
||||
#include "remux.h"
|
||||
@ -1244,7 +1244,7 @@ int cH264Parser::Parse(const uchar *Data, int Length, int Pid)
|
||||
break;
|
||||
case nutCodedSliceNonIdr:
|
||||
case nutCodedSliceIdr: if (gotAccessUnitDelimiter && gotSequenceParameterSet) {
|
||||
ParseSliceHeader();
|
||||
ParseSliceHeader();
|
||||
gotAccessUnitDelimiter = false;
|
||||
return tsPayload.Used();
|
||||
}
|
||||
|
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: ringbuffer.h 2.4 2012/09/20 09:29:32 kls Exp $
|
||||
* $Id: ringbuffer.h 2.5 2013/02/16 15:20:37 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef __RINGBUFFER_H
|
||||
@ -84,17 +84,17 @@ public:
|
||||
///< Reads at most Max bytes from FileHandle and stores them in the
|
||||
///< ring buffer. If Max is 0, reads as many bytes as possible.
|
||||
///< Only one actual read() call is done.
|
||||
///< \return Returns the number of bytes actually read and stored, or
|
||||
///< Returns the number of bytes actually read and stored, or
|
||||
///< an error value from the actual read() call.
|
||||
int Read(cUnbufferedFile *File, int Max = 0);
|
||||
///< Like Read(int FileHandle, int Max), but reads from a cUnbufferedFile).
|
||||
int Put(const uchar *Data, int Count);
|
||||
///< Puts at most Count bytes of Data into the ring buffer.
|
||||
///< \return Returns the number of bytes actually stored.
|
||||
///< Returns the number of bytes actually stored.
|
||||
uchar *Get(int &Count);
|
||||
///< Gets data from the ring buffer.
|
||||
///< The data will remain in the buffer until a call to Del() deletes it.
|
||||
///< \return Returns a pointer to the data, and stores the number of bytes
|
||||
///< Returns a pointer to the data, and stores the number of bytes
|
||||
///< actually available in Count. If the returned pointer is NULL, Count has no meaning.
|
||||
void Del(int Count);
|
||||
///< Deletes at most Count bytes from the ring buffer.
|
||||
|
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: skinlcars.c 2.18 2013/01/25 14:54:11 kls Exp $
|
||||
* $Id: skinlcars.c 2.19 2013/02/15 15:08:02 kls Exp $
|
||||
*/
|
||||
|
||||
// "Star Trek: The Next Generation"(R) is a registered trademark of Paramount Pictures,
|
||||
@ -1136,7 +1136,7 @@ void cSkinLCARSDisplayMenu::DrawTimer(const cTimer *Timer, int y, bool MultiRec)
|
||||
// The timer data:
|
||||
bool Alert = !Timer->Recording() && Timer->Pending();
|
||||
tColor ColorFg = Alert ? Theme.Color(clrAlertFg) : Theme.Color(clrTimerFg);
|
||||
tColor ColorBg = Alert ? Theme.Color(clrAlertFg) : Theme.Color(clrTimerBg);
|
||||
tColor ColorBg = Alert ? Theme.Color(clrAlertBg) : Theme.Color(clrTimerBg);
|
||||
osd->DrawRectangle(xs00, y, xs03 - 1, y + lineHeight - 1, ColorBg);
|
||||
cString Date;
|
||||
if (Timer->Recording())
|
||||
|
4
svdrp.c
4
svdrp.c
@ -10,7 +10,7 @@
|
||||
* and interact with the Video Disk Recorder - or write a full featured
|
||||
* graphical interface that sits on top of an SVDRP connection.
|
||||
*
|
||||
* $Id: svdrp.c 2.23 2013/01/17 15:19:02 kls Exp $
|
||||
* $Id: svdrp.c 2.24 2013/02/17 13:18:01 kls Exp $
|
||||
*/
|
||||
|
||||
#include "svdrp.h"
|
||||
@ -1512,7 +1512,7 @@ void cSVDRP::CmdPUTE(const char *Option)
|
||||
else
|
||||
Reply(501, "Cannot open file \"%s\"", Option);
|
||||
}
|
||||
else {
|
||||
else {
|
||||
delete PUTEhandler;
|
||||
PUTEhandler = new cPUTEhandler;
|
||||
Reply(PUTEhandler->Status(), "%s", PUTEhandler->Message());
|
||||
|
4
thread.h
4
thread.h
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: thread.h 2.3 2012/10/04 12:15:39 kls Exp $
|
||||
* $Id: thread.h 2.4 2013/02/16 15:20:44 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef __THREAD_H
|
||||
@ -31,7 +31,7 @@ public:
|
||||
bool Wait(int TimeoutMs = 0);
|
||||
///< Waits at most TimeoutMs milliseconds for a call to Signal(), or
|
||||
///< forever if TimeoutMs is 0.
|
||||
///< \return Returns true if Signal() has been called, false it the given
|
||||
///< Returns true if Signal() has been called, false it the given
|
||||
///< timeout has expired.
|
||||
void Signal(void);
|
||||
///< Signals a caller of Wait() that the condition it is waiting for is met.
|
||||
|
4
tools.h
4
tools.h
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: tools.h 2.23 2012/12/06 08:59:39 kls Exp $
|
||||
* $Id: tools.h 2.24 2013/02/17 13:18:06 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef __TOOLS_H
|
||||
@ -45,7 +45,7 @@ extern int SysLogLevel;
|
||||
|
||||
#define MALLOC(type, size) (type *)malloc(sizeof(type) * (size))
|
||||
|
||||
template<class T> inline void DELETENULL(T *&p) { T *q = p; p = NULL; delete q; }
|
||||
template<class T> inline void DELETENULL(T *&p) { T *q = p; p = NULL; delete q; }
|
||||
|
||||
#define CHECK(s) { if ((s) < 0) LOG_ERROR; } // used for 'ioctl()' calls
|
||||
#define FATALERRNO (errno && errno != EAGAIN && errno != EINTR)
|
||||
|
28
vdr.c
28
vdr.c
@ -22,7 +22,7 @@
|
||||
*
|
||||
* The project's page is at http://www.tvdr.de
|
||||
*
|
||||
* $Id: vdr.c 2.48 2013/02/08 10:47:02 kls Exp $
|
||||
* $Id: vdr.c 2.49 2013/02/14 10:49:06 kls Exp $
|
||||
*/
|
||||
|
||||
#include <getopt.h>
|
||||
@ -834,22 +834,26 @@ int main(int argc, char *argv[])
|
||||
time_t Now = time(NULL);
|
||||
|
||||
// Make sure we have a visible programme in case device usage has changed:
|
||||
if (!EITScanner.Active() && cDevice::PrimaryDevice()->HasDecoder() && !cDevice::PrimaryDevice()->HasProgramme()) {
|
||||
if (!EITScanner.Active() && cDevice::PrimaryDevice()->HasDecoder()) {
|
||||
static time_t lastTime = 0;
|
||||
if (!CamMenuActive() && Now - lastTime > MINCHANNELWAIT) { // !CamMenuActive() to avoid interfering with the CAM if a CAM menu is open
|
||||
cChannel *Channel = Channels.GetByNumber(cDevice::CurrentChannel());
|
||||
if (Channel && (Channel->Vpid() || Channel->Apid(0) || Channel->Dpid(0))) {
|
||||
if (cDevice::GetDeviceForTransponder(Channel, LIVEPRIORITY) && Channels.SwitchTo(Channel->Number())) // try to switch to the original channel...
|
||||
;
|
||||
else if (LastTimerChannel > 0) {
|
||||
Channel = Channels.GetByNumber(LastTimerChannel);
|
||||
if (Channel && cDevice::GetDeviceForTransponder(Channel, LIVEPRIORITY) && Channels.SwitchTo(LastTimerChannel)) // ...or the one used by the last timer
|
||||
if (!cDevice::PrimaryDevice()->HasProgramme()) {
|
||||
if (!CamMenuActive() && Now - lastTime > MINCHANNELWAIT) { // !CamMenuActive() to avoid interfering with the CAM if a CAM menu is open
|
||||
cChannel *Channel = Channels.GetByNumber(cDevice::CurrentChannel());
|
||||
if (Channel && (Channel->Vpid() || Channel->Apid(0) || Channel->Dpid(0))) {
|
||||
if (cDevice::GetDeviceForTransponder(Channel, LIVEPRIORITY) && Channels.SwitchTo(Channel->Number())) // try to switch to the original channel...
|
||||
;
|
||||
else if (LastTimerChannel > 0) {
|
||||
Channel = Channels.GetByNumber(LastTimerChannel);
|
||||
if (Channel && cDevice::GetDeviceForTransponder(Channel, LIVEPRIORITY) && Channels.SwitchTo(LastTimerChannel)) // ...or the one used by the last timer
|
||||
;
|
||||
}
|
||||
}
|
||||
lastTime = Now; // don't do this too often
|
||||
LastTimerChannel = -1;
|
||||
}
|
||||
lastTime = Now; // don't do this too often
|
||||
LastTimerChannel = -1;
|
||||
}
|
||||
else
|
||||
lastTime = 0; // makes sure we immediately try again next time
|
||||
}
|
||||
// Update the OSD size:
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user