summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CONTRIBUTORS11
-rw-r--r--HISTORY17
-rw-r--r--INSTALL5
-rw-r--r--MANUAL3
-rw-r--r--PLUGINS.html8
-rw-r--r--README3
-rw-r--r--UPDATE-1.2.0274
-rw-r--r--config.h6
-rw-r--r--eit.c13
-rw-r--r--genfontfile.c2
-rw-r--r--i18n.c330
-rw-r--r--menu.c10
-rw-r--r--recording.c95
-rw-r--r--vdr.18
-rw-r--r--vdr.512
-rw-r--r--vdr.c6
16 files changed, 570 insertions, 233 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index b1f3a3d..085dcb1 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -173,6 +173,8 @@ Stefan Huelswitt <huels@iname.com>
video sequence, which avoids artefacts when cutting
for suggesting to add VDRVERSNUM to config.h
for fixing a memory leak in cNonBlockingFileReader
+ for fixing an uninitialized variable in cDisplayChannel
+ for fixing a possible access of invalid file handles in cSIProcessor::Action()
Ulrich Röder <roeder@efr-net.de>
for pointing out that there are channels that have a symbol rate higher than
@@ -677,7 +679,7 @@ Alfred Zastrow <vdr@zastrow4u.de>
Matthias Raus <matthias-raus@web.de>
for reporting a problem with starting the editing process if no marks have been set
-Marc Rovira Vall <tm05462@salleURL.edu> and Ramon Roca <ramon.roca@xcombo.com>
+Marc Rovira Vall <tm05462@salleURL.edu>, Ramon Roca <ramon.roca@xcombo.com> and Jordi Vilŕ <jvila@tinet.org>
for translating OSD texts to the Catalanian language
Lars Bläser <LBlaeser@hofheim.de>
@@ -699,3 +701,10 @@ Peter Bieringer <pb@bieringer.de>
Alexander Damhuis <ad@phonedation.de>
for reporting problems when deleting a timer that is currently recording
+
+Antonio Ospite <ospite@studenti.unina.it>
+ for translating OSD texts to the Italian language
+
+Karim Afifi <karim.afifi@free.fr>
+ for reporting a problem with breaking off replay in case the user presses "Play"
+ or "Pause" too soon after going into "Pause live video" mode
diff --git a/HISTORY b/HISTORY
index 65ca0fe..914b39a 100644
--- a/HISTORY
+++ b/HISTORY
@@ -2208,3 +2208,20 @@ Video Disk Recorder Revision History
(thanks to Gerhard Steiner for reporting this one).
- It is now possible to directly delete a timer that is currently recording
(thanks to Alexander Damhuis for reporting this one).
+
+2003-05-30: Version 1.2.0pre1
+
+- Some corrections to the French OSD texts (thanks to Olivier Jacques).
+- Fixed some missing commas in i18n.c (thanks to Dimitrios Dimitrakos for
+ reporting this problem).
+- Some corrections to the Finnish OSD texts (thanks to Niko Tarnanen and Rolf
+ Ahrenberg).
+- Completed the Italian OSD texts (thanks to Antonio Ospite).
+- Fixed breaking off replay in case the user hits "Play" or "Pause" too soon after
+ going into "Pause live video" mode (thanks to Karim Afifi for reporting ths one).
+- Some corrections to the Catalanian OSD texts (thanks to Jordi Vilŕ).
+- Single event timers are now deleted if the recording they are doing is
+ deleted before the timer ends.
+- Fixed an uninitialized variable in cDisplayChannel (thanks to Stefan Huelswitt).
+- Fixed a possible access of invalid file handles in cSIProcessor::Action()
+ (thanks to Stefan Huelswitt).
diff --git a/INSTALL b/INSTALL
index 11efa22..cf66c5d 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,6 +1,9 @@
Installation of the Video Disk Recorder
---------------------------------------
+Version 1.2
+-----------
+
Compiling and running the program:
----------------------------------
@@ -15,7 +18,7 @@ If you have the DVB driver source in a different location
you will have to change the definition of DVBDIR in the
Makefile (see the file Make.config.template).
-VDR requires the Linux-DVB card driver version dated 2002-11-01 or higher
+VDR requires the Linux-DVB card driver version dated 2003-05-24 or higher
to work properly.
After extracting the package, change into the VDR directory
diff --git a/MANUAL b/MANUAL
index a8ebee2..742b743 100644
--- a/MANUAL
+++ b/MANUAL
@@ -1,6 +1,9 @@
Video Disk Recorder User's Manual
---------------------------------
+Version 1.2
+-----------
+
* Remote Control Keys
The following remote control keys are used to control the VDR
diff --git a/PLUGINS.html b/PLUGINS.html
index 9a97b00..913a991 100644
--- a/PLUGINS.html
+++ b/PLUGINS.html
@@ -6,6 +6,14 @@
<center><h1>The VDR Plugin System</h1></center>
+<center><b>Version 1.2</b></center>
+<p>
+<center>
+Copyright &copy; 2003 Klaus Schmidinger<br>
+<a href="mailto:kls@cadsoft.de">kls@cadsoft.de</a><br>
+<a href="http://www.cadsoft.de/vdr">www.cadsoft.de/vdr</a>
+</center>
+<p>
VDR provides an easy to use plugin interface that allows additional functionality
to be added to the program by implementing a dynamically loadable library file.
This interface allows programmers to develop additional functionality for VDR completely
diff --git a/README b/README
index 809034f..738fe3d 100644
--- a/README
+++ b/README
@@ -14,6 +14,9 @@ this program on your computer.
The MANUAL file describes how to operate the VDR.
+The CONTRIBUTORS file lists all the people who have contributed to the
+development of VDR.
+
The author can be contacted at kls@cadsoft.de.
Yet another "set-top-box"?
diff --git a/UPDATE-1.2.0 b/UPDATE-1.2.0
new file mode 100644
index 0000000..8934196
--- /dev/null
+++ b/UPDATE-1.2.0
@@ -0,0 +1,274 @@
+This is a summary of the changes in VDR 1.2.0 since the last stable
+version 1.0.4. 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.
+
+Plugins:
+
+- Implemented a universal plugin interface. See the file PLUGINS.html
+ for a detailed description. The man page vdr(1) describes the new options '-L'
+ and '-P' used to load plugins.
+ See http://www.cadsoft.de/vdr/plugins.htm for a list of available plugins.
+- Rearranged the remote control key handling to allow plugins to implement
+ additional types of remote controls (see PLUGINS.html, section "Remote Control").
+ The previously used files 'keys.conf' and 'keys-pc.conf' have been replaced
+ by the file 'remote.conf', which holds the key definitions of all remote controls.
+- The new plugin 'sky' can be used to integrate a Sky Digibox into the VDR system,
+ using a Kfir MPEG2 encoder card (see PLUGINS/src/sky/README for details).
+
+Remote control:
+
+- If a PC keyboard is used as remote control, the string entry fields in the
+ menus now accept character input directly (however, this works only for keys that
+ are not otherwise defined as remote control keys). Also, plugins can switch the
+ cKbdRemote class into "raw mode", where all keyboard input will be made available
+ through the new 'kKbd' key code and none of it will be processed as normal remote
+ control functions.
+- The LIRC remote control keys are now handled just like the keyboard and RCU keys.
+ This means that you can use the lircd.conf file as is for your remote control,
+ without the need of editing it to make the key names the same as used in VDR.
+ When first starting VDR it will go into the "Learning keys" mode and ask you
+ to press the various keys. The resulting key assignment will be stored in
+ the file 'remote.conf'.
+- While learning the remote control keys it is now possible to press the 'Menu'
+ key to skip the definition of keys that are not available on your particular
+ RC unit.
+- Implemented additional dedicated keys for "Play", "Pause", "Stop", "Record",
+ "FastFwd", "FastRew", "Channel+" and "Channel-". If your remote control supports
+ any of these keys you can delete your 'remote.conf' file and restart VDR to
+ go through the key learning procedure again in order to assign these new keys.
+ See MANUAL for more information.
+- Implemented new keys to directly access the VDR main menu functions "Schedule",
+ "Channels", "Timers", "Recordings", "Setup" and "Commands". If your remote
+ control provides keys you want to assign these functions to, you can delete
+ your 'remote.cof' file and restart VDR to go through the key learning procedure
+ again in order to assign these new keys. See MANUAL for more information.
+- The new configuration file 'keymacros.conf' can be used to assign macros to
+ the color buttons in normal viewing mode, as well as to up to 9 user defined
+ keys. See MANUAL and man vdr(5) for more information. The default 'keymacros.conf'
+ implements the functionality of the old "color button patch".
+- Macros in 'keymacros.conf' can now use "@plugin" to directly access the main menu
+ function of a given plugin (see man vdr(5) for details).
+- The keyboard is now by default always active to control VDR. The 'make' option
+ REMOTE=KBD is therefore obsolete. When compiling VDR with REMOTE=RCU or REMOTE=LIRC,
+ the keyboard can thus now be active together with the remote control. If you want
+ to build VDR without keyboard support you can set NO_KBD=1 in the 'make' call.
+ Since the keyboard codes are now different from the ones used previously (which
+ were mapped by the 'ncurses' library) you will need to go through the "Learning
+ keys" procedure again. To do so, either delete the file /video/remote.conf or
+ remove the KBD.* entries from it before starting this version of VDR.
+- The "Left" and "Right" buttons now set the cursor to the first or last list item
+ even if the list consist only of a single page, like, for instance, the Main menu.
+- The red ("Record") and yellow ("Pause") button in the "Main" menu are no longer
+ available when replaying.
+
+Devices:
+
+- If the primary device (as defined in setup.conf) doesn't have an MPEG decoder
+ (and thus can't be used as a primary device) VDR now scans all devices at
+ startup and uses the first one (if any) that actually has an MPEG decoder.
+ That way this will also work automatically if the primary device is implemented
+ by a plugin.
+- If no device with an MPEG decoder can be found at startup, the first device
+ is now used as primary device (just to have some device).
+- Now turning off live PIDs when replaying. This avoids short spikes from other
+ channels when switching between Transfer Mode channels, and also lets an ongoing
+ replay continue even if a recording is started on the primary device.
+- Now switching to the channel used by the most recently started timer in case
+ the original current channel becomes unavailable due to a recording on a
+ different transponder. If this fails, a channel up/down switch is attempted as
+ a fallback solution.
+- Changed the DEFAULTPRIORITY in device.c to -1, so that the primary device
+ will be used for FTA recordings in case the CAM is connected to a non-primary
+ device.
+- The actual tuning is now done in a separate thread, which makes zapping through the
+ channels a lot faster and no longer gets stuck on channels that don't broadcast.
+ This also makes "Motor-DiSEqC" work. Since switching channels now no longer
+ explicitly waits for a channel lock in the foreground thread, the "panic level"
+ mechanism is no longer used.
+
+Time Shifting:
+
+- Changed device handling for being able to do simultaneous recording and
+ replay on the same device (Time Shifting). In order for this to work you need
+ to use a driver with a firmware version that has this feature implemented.
+- It is now possible to do simultaneous recording and replay with a single DVB
+ card, even with encrypted channels. This requires the use of the Link Layer
+ firmware, version 2613 or higher; the -icam firmware is still limited to live
+ encrypted channels only. Finally we have time shift for encrypted channels on
+ single card systems!
+- Implemented "pause live video". You can now press "Menu/Yellow" or "Pause" on
+ your remote control while watching live video to start an instant recording
+ of the current programme and immediately start replaying that recording.
+- Implemented separate PausePriority and PauseLifetime parameters for the recordings
+ created when pausing live video.
+
+Channels:
+
+- Modified channel handling to cover all parameters necessary for DVB-C and DVB-T
+ (see man vdr(5) for the meaning of the additional parameters stored in the field
+ previously named 'polarisation').
+ If you have a system with different kinds of DVB cards, like DVB-T and DVB-C,
+ for instance, there is no more need to distinguish the channels through the
+ 'Ca' parameter in order to assign them to the various DVB cards. This is now
+ taken care of by the "source" parameter. So a channel marked as "terrestrial",
+ for example, will only be received on DVB-T cards.
+- Updated channels.conf files.
+- Switching through channels with the 'Up' and 'Down' keys now skips channels
+ that are currently not available (for instance because all devices are
+ recording and these channels are on different transponders).
+- The new configuration file 'sources.conf' contains the various signal sources
+ (satellites, cable and terrestrial) which are used in 'channels.conf' and
+ 'diseqc.conf'.
+- The 'diseqc' parameter in the channel definitions has been redefined to hold the
+ "source" of the given channel (which can be either a satellite, cable or terrestrial).
+ For compatibility with channels.conf files from older versions, numeric values in
+ this parameter will be tolerated, but they have no meaning. If you want to use
+ DiSEqC you will need to replace these old values with the proper source identifiers
+ defined in the new configuration file 'sources.conf'. See how this is done in the
+ 'channels.conf' file that comes with the VDR package.
+- The new configuration file 'diseqc.conf' can be used to set up the individual
+ diseqc configuration (see man vdr(5) for a description of the file format).
+- The "Edit channel" menu has a new entry "Source:" in which the source of this
+ channel can be selected (either a satellite, cable or terrestrial). The set of
+ parameters at the end of this menu will change according to the type of source.
+- The "Use DiSEqC" parameter in the "Setup/LNB" menu has been moved to the beginning
+ of the list and disables the rest of the parameters when set to "yes", since these
+ are now only meaningful if DiSEqC is not used.
+- Group separators in 'channels.conf' may now be given like ':@201 My Channels',
+ where '@201' indicates the number to be given to the next channel. This can be
+ used to create 'gaps' in the channel numbering (see 'man 5 vdr'). BE CAREFUL
+ TO UPDATE YOUR 'timers.conf' ACCORDINGLY IF INSERTING THIS NEW FEATURE INTO YOUR
+ 'channels.conf' FILE!
+- Frequency values for cable and terrestrial channels in 'channels.conf' can
+ now be given either in MHz, kHz or Hz. The actual value given will be multiplied
+ by 1000 until it is larger than 1000000.
+- First step towards a "unique channel ID". The channel ID is a human readable
+ string, made up from several parameters of the channel's definition in the file
+ 'channels.conf' (see man vdr(5) for details).
+ In order for the "unique channel ID" to work, all channel definitions now must
+ be unique with respect to the combination of their Source, Frequency and SID
+ parameters. You may have to fix your 'channels.conf' manually if there are error
+ messages in the log file when loading it. BE SURE TO MAKE A BACKUP COPY OF YOUR
+ 'channels.conf' AND 'timers.conf' FILE BEFORE SWITCHING TO THIS VERSION, AND CHECK
+ VERY CAREFULLY WHETHER YOUR TIMERS ARE STILL SET TO THE RIGHT CHANNELS!
+ When reading an existing 'timers.conf', the channels will be identified as before
+ by their numbers. As soon as this file is written back, the channel numbers will
+ be replaced by the channel IDs. After that it is possible to manually edit the
+ 'channels.conf' file and rearrange the channels without breaking the timers.
+ Note that you can still define new timers manually by using the channel number.
+ VDR will correctly identify the 'channel' parameter in a timer definition and
+ use it as a channel number or a channel ID, respectively. Also, the SVDRP commands
+ that return timer definitions will list them with channel numbers in order to
+ stay compatible with existing applications.
+ The channel ID is also used in the 'epg.data' file to allow EPG information from
+ different sources to be stored, which would previously have been mixed up in case
+ they were using the same 'service ID'. Note that the contents of an existing
+ 'epg.data' file from a previous version will be silently ignored, since it doesn't
+ contain the new channel IDs. When inserting EPG data into VDR via SVDRP you now also
+ need to use the channel IDs.
+ Currently the EPG data received from the DVB data stream only uses the 'Source'
+ and 'Service ID' part of the channel ID. This makes it work for channels with
+ the same service IDs on different sources (like satellites, cable or terrestrial).
+ However, it doesn't work yet if the service IDs are not unique within a specific
+ source. This will be fixed later.
+- Added three new fields to the lines in 'channels.conf': NID, TID and RID. NID and
+ TID are the Network and Transport Stream IDs, respectively. RID is an additional ID
+ that can be used to tell apart channels that would otherwise be indistinguishable.
+ This is typically the case with radio channels, which may have the same NID, TID
+ and SID, but different "radio IDs". This new field is therefore called RID ("radio
+ ID"). Currently NID and TID are not yet used by VDR and should always be 0. The
+ RID is actually used when building the "unique channel ID", so if you have channels
+ in your 'channels.conf' file that cause error messages when loading, you can set
+ the RIDs of these channels to different values.
+ When reading an old 'channels.conf' these new fields will be automatically
+ initialized to 0 and once the file is written back to disk they will be appended
+ to the channel definitions.
+- The "unique channel ID" now contains an optional 5th part (the RID). See man vdr(5).
+- Modified LOF handling to allow for C-band reception.
+- The PCR PID can now be set separately from the video PID. The syntax in the
+ 'channels.conf' file is, for example, ...:164+17:..., where 164 is the video PID
+ and 17 is the PCR PID. The separator is a '+' sign, not a comma or semicolon as
+ with the audio PIDs, because this is not an alternate PID, but rather an
+ additional, necessary PID.
+
+Recording:
+
+- It is now possible to record several channels on the same transponder with "budget
+ cards". VDR automatically attaches a recording timer to a card that already
+ records on the appropriate transponder. How many parallel recordings can actually
+ be done depends on the computer's performance. Currently any number of recordings
+ gets attached to a card, so you should carefully plan your timers to not exceed
+ the limit. On a K6-II/450 it was possible to record three channels from transponder
+ 12480 with a single WinTV NOVA-S.
+- Timers that record two successive shows on the same channel may now overlap and
+ will use the same DVB card. During the time where both timers record the data
+ is simply saved to both files.
+- Since several channels put very long strings into the Subtitle part of their
+ EPG data, that string is now limited in length when used in a recording's
+ file name.
+- Timers are now processed even if an OSD menu is open (except for menus that
+ explicitly handle timers).
+- Implemented a "resume ID" which allows several users to each have their own
+ resume.vdr files. This parameter can be set in the "Setup/Replay" menu (see
+ MANUAL for details).
+- Extended logging info when starting/stopping timers to show the channel number,
+ start/stop time and the file name.
+- Reduced the time to wait for EPG data when starting a recording to 3 seconds.
+- Checking for duplicate recordings with the same file name and disabling the
+ second timer.
+- It is now possible to directly delete a timer that is currently recording.
+
+SVDRP:
+
+- The new SVDRP command CLRE can be used to clear the entire EPG data.
+- The SVDRP command PUTE now triggers an immediate write of the 'epg.data' file.
+- The SVDRP command CHAN now also accepts channel IDs.
+- The new SVDRP command STAT can be used to request information about the disk
+ usage.
+- Now taking an active SVDRP connection into account when doing shutdown or
+ housekeeping.
+
+Conditional Access:
+
+- Implemented "Link Layer" based CAM support. This allows access to the CAM menu
+ and also to reset the CAM. Furthermore the CAM can now be in any slot of any
+ DVB card, and there can be more than one CAM.
+- If your particular CAM doesn't work with the Link Layer interface, you can
+ still use the old firmware version ("-icam"), which does all the CAM handling
+ by itself (see DVB/driver/av7110/README-firmware).
+
+Misc:
+
+- Removed compiler option '-m486' to make it work on non-Intel platforms.
+- Changed setting of CXX and CXXFLAGS variables in Makefile, so that an externally
+ defined value will be taken if present.
+- New and improved internationalized OSD texts.
+- The VDR version number is now displayed in the title line of the "Setup" menu.
+- Changed the VFAT handling to allow users who normally use it but have forgotten
+ to set it when compiling a new version of VDR to at least see their recordings
+ made with VFAT enabled.
+- Commands in the file 'commands.conf' can now have a '?' at the end of their
+ title, which will result in a confirmation prompt before executing the
+ command.
+- If a command executed from the "Commands" menu doesn't return any output, the
+ OSD will now be closed automatically.
+- The new configuration file 'reccmds.conf' can be used to define commands that
+ shall be executed from the "Recordings" menu; see MANUAL and 'man vdr(5)' for
+ details.
+- The Makefile now includes the file Make.config (if present in the VDR source
+ directory), which allows the user to overwrite several settings with individual
+ values. The VDR distribution archive does not contain this file in order to not
+ overwrite a user defined file. There is a Make.config.template which contains the
+ default values of the macros the user can overwrite.
+- Extended the '-l' option to allow logging to LOG_LOCALn (n=0..7) by writing, for
+ instance, '-l 3.7'.
+- The character '|' in description texts of EPG records is now interpreted as a
+ newline character.
+- Now using "Doxygen" to generate source documentation.
+ See INSTALL for information how to do this. Some function descriptions have
+ already been adapted to Doxygen, more will follow.
+- Added VDRVERSNUM to config.h, which can be used by the preprocessor to check the
+ actual VDR version.
diff --git a/config.h b/config.h
index c7c3013..e34534b 100644
--- a/config.h
+++ b/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 1.160 2003/05/19 15:27:37 kls Exp $
+ * $Id: config.h 1.162 2003/05/29 12:17:37 kls Exp $
*/
#ifndef __CONFIG_H
@@ -19,8 +19,8 @@
#include "device.h"
#include "tools.h"
-#define VDRVERSION "1.1.33"
-#define VDRVERSNUM 10133 // Version * 10000 + Major * 100 + Minor
+#define VDRVERSION "1.2.0pre1"
+#define VDRVERSNUM 10200 // Version * 10000 + Major * 100 + Minor
#define MAXPRIORITY 99
#define MAXLIFETIME 99
diff --git a/eit.c b/eit.c
index a5b14e7..99eb405 100644
--- a/eit.c
+++ b/eit.c
@@ -16,7 +16,7 @@
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
- * $Id: eit.c 1.78 2003/05/18 14:10:25 kls Exp $
+ * $Id: eit.c 1.79 2003/05/29 15:04:10 kls Exp $
***************************************************************************/
#include "eit.h"
@@ -1236,10 +1236,17 @@ void cSIProcessor::Action()
// wait until data becomes ready from the bitfilter
if (poll(pfd, NumUsedFilters, 1000) != 0)
{
- for (int a = 0; a < NumUsedFilters ; a++)
+ for (int aa = 0; aa < NumUsedFilters; aa++)
{
- if (pfd[a].revents & POLLIN)
+ if (pfd[aa].revents & POLLIN)
{
+ int a;
+ for (a = 0; a < MAX_FILTERS; a++) {
+ if (pfd[aa].fd == filters[a].handle)
+ break;
+ }
+ if (a >= MAX_FILTERS || !filters[a].inuse) // filter no longer available
+ continue;
// read section
unsigned char buf[4096]; // max. allowed size for any EIT section
int r = safe_read(filters[a].handle, buf, sizeof(buf));
diff --git a/genfontfile.c b/genfontfile.c
index a98f801..41d87b7 100644
--- a/genfontfile.c
+++ b/genfontfile.c
@@ -7,7 +7,7 @@
/* X compile line: cc -o gentexfont gentexfont.c -lX11 */
/* 2000-10-01: Stripped down the original code to get a simple bitmap C-code generator */
-/* for use with the VDR project (see http://www.cadsoft.de/people/kls/vdr) */
+/* for use with the VDR project (see http://www.cadsoft.de/vdr) */
/* Renamed the file 'genfontfile.c' since it no longer generates 'tex' data */
/* Klaus Schmidinger (kls@cadsoft.de) */
diff --git a/i18n.c b/i18n.c
index 2e4c86f..f2fa3c5 100644
--- a/i18n.c
+++ b/i18n.c
@@ -4,12 +4,12 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: i18n.c 1.117 2003/05/25 14:20:27 kls Exp $
+ * $Id: i18n.c 1.122 2003/05/29 10:38:51 kls Exp $
*
* Translations provided by:
*
* Slovenian Miha Setina <mihasetina@softhome.net> and Matjaz Thaler <matjaz.thaler@guest.arnes.si>
- * Italian Alberto Carraro <bertocar@tin.it>
+ * Italian Alberto Carraro <bertocar@tin.it> and Antonio Ospite <ospite@studenti.unina.it>
* Dutch Arnold Niessen <niessen@iae.nl> <arnold.niessen@philips.com>
* Portuguese Paulo Lopes <pmml@netvita.pt>
* French Jean-Claude Repetto <jc@repetto.org>, Olivier Jacques <jacquesolivier@hotmail.com> and Gregoire Favre <greg@magma.unil.ch>
@@ -21,7 +21,7 @@
* Swedish Tomas Prybil <tomas@prybil.se> and Jan Ekholm <chakie@infa.abo.fi>
* Romanian Paul Lacatus <paul@campina.iiruc.ro>
* Hungarian Istvan Koenigsberger <istvnko@hotmail.com> and Guido Josten <guido.josten@t-online.de>
- * Catalanian Marc Rovira Vall <tm05462@salleURL.edu> and Ramon Roca <ramon.roca@xcombo.com>
+ * Catalanian Marc Rovira Vall <tm05462@salleURL.edu>, Ramon Roca <ramon.roca@xcombo.com> and Jordi Vilŕ <jvila@tinet.org>
*
*/
@@ -211,7 +211,7 @@ const tI18nPhrase Phrases[] = {
{ "Recording commands",
"Befehle für Aufzeichnungen",
"Ukazi za snemanje",
- "",// TODO
+ "Comandi di Registrazione",
"",// TODO
"",// TODO
"Commandes d'enregistrement",
@@ -274,7 +274,7 @@ const tI18nPhrase Phrases[] = {
"Sändning",
"Evenimente",
"Adás",
- "Event",
+ "Esdeveniment",
},
{ "Summary",
"Inhalt",
@@ -284,7 +284,7 @@ const tI18nPhrase Phrases[] = {
"Resumo",
"Résumé",
"Sammendrag",
- "Yhteenveto",
+ "Tiedot",
"Zawartosc",
"Resúmen",
"Periexomeno",
@@ -325,7 +325,7 @@ const tI18nPhrase Phrases[] = {
"Vilket program sänds nu?",
"Programul actual?",
"Mi megy most?",
- "Que fan ara?",
+ "Quč fan ara?",
},
{ "What's on next?",
"Was läuft als nächstes?",
@@ -342,7 +342,7 @@ const tI18nPhrase Phrases[] = {
"Vilket är nästa program?",
"Programul urmator?",
"Mi következik?",
- "Que fan després?",
+ "Quč fan després?",
},
// Button texts (should not be more than 10 characters!):
{ "Edit",
@@ -404,7 +404,7 @@ const tI18nPhrase Phrases[] = {
"Marcar",
"Marquer",
"Marker",
- "Merkitse",
+ "Siirrä",
"Zaznaczyc",
"Marcar",
"Epilogi",
@@ -489,14 +489,14 @@ const tI18nPhrase Phrases[] = {
"Parar",
"Arręt",
"Stopp",
- "Pysäytä",
+ "Lopeta",
"Zakonczyc",
"Parar",
"Terma",
"Stopp",
"Stop",
"Stop",
- "Parar",
+ "Aturar",
},
{ "Resume",
"Weiter",
@@ -591,7 +591,7 @@ const tI18nPhrase Phrases[] = {
"Proximo",
"Aprčs",
"Neste",
- "Seuraava",
+ "Seuraavaksi",
"Nastepny",
"Siguiente",
"Epomeno",
@@ -671,7 +671,7 @@ const tI18nPhrase Phrases[] = {
{ "Insert",
"Einfügen",
"Vstavi",
- "",// TODO
+ "Inserisci",
"",// TODO
"",// TODO
"Insért",
@@ -683,12 +683,12 @@ const tI18nPhrase Phrases[] = {
"Infoga",
"Insereaza",
"Beilleszteni",
- "Insertar",
+ "Inserir",
},
{ "Overwrite",
"Überschreiben",
"Prepisi",
- "",// TODO
+ "Sovrascrivi",
"",// TODO
"",// TODO
"Écraser",
@@ -722,12 +722,12 @@ const tI18nPhrase Phrases[] = {
{ "Reset",
"Reset",
"Reset",
- "",//TODO
+ "Reset",
"",//TODO
"",//TODO
"Réinitialisation",
"",//TODO
- "Nollaa",
+ "Alusta",
"",//TODO
"Reiniciar",
"Epanafora",
@@ -745,7 +745,7 @@ const tI18nPhrase Phrases[] = {
"Apagar o canal?",
"Supprimer la chaîne?",
"Slette kanal?",
- "Poista kanava?",
+ "Poistetaanko kanava?",
"Usunac kanal?",
"żEliminar canal?",
"Diagrafi Kanaliou?",
@@ -762,7 +762,7 @@ const tI18nPhrase Phrases[] = {
"Apagar o timer?",
"Supprimer la programmation?",
"Slette timer?",
- "Poista ajastin?",
+ "Poistetaanko ajastin?",
"Usunac timer?",
"żEliminar timer?",
"Diagrafi programmitismou?",
@@ -779,24 +779,24 @@ const tI18nPhrase Phrases[] = {
"Apagar a gravaçăo?",
"Supprimer l'enregistrement?",
"Slette opptak?",
- "Poista tallenne?",
+ "Poistetaanko tallenne?",
"Usunac nagranie?",
"żEliminar grabacion?",
"Svisimo egrafis?",
"Ta bort inspelningen?",
"Sterg inregistrarea?",
"Felvétel törlése?",
- "Esborrar gravació?"
+ "Esborrar gravació?",
},
{ "Timer still recording - really delete?",
"Timer zeichnet auf - trotzdem löschen?",
"Snemanje po terminu - zares izbrisi?",
- "Timer in regestazione - cancello?",
+ "Timer in registrazione - cancello?",
"Timer neemt nog op - toch verwijderen?",
"Timer activo - tęm a certeza que quer apagar?",
"Enregistrement en cours - confirmez la suppression",
"Timer gjřr opptak - vil du slette likevel?",
- "Ajastin aktiivinen - poistetaanko?",
+ "Ajastettu tallennus käynnissä - keskeytetäänkö?",
"Nagrywanie w trakcie - napewno usunac?",
"żTimer activo - de verdad eliminarlo?",
"Programmatismos se exselixsi - Diagrafi sigoura?",
@@ -813,14 +813,14 @@ const tI18nPhrase Phrases[] = {
"Parar Gravaçăo?",
"Arręter l'enregistrement?",
"Stoppe opptak?",
- "Keskeytä tallennus?",
+ "Lopetetaanko tallennus?",
"Zakonczyc nagranie?",
"żParar grabación?",
"Akirosi egrafis?",
"Stanna inspelning?",
"Opresc inregistrarea?",
"Felvétel befejezni?",
- "Parar la gravació?",
+ "Aturar la gravació?",
},
{ "on primary interface",
"auf dem primären Interface",
@@ -847,14 +847,14 @@ const tI18nPhrase Phrases[] = {
"Cancelar Modificaçőes?",
"Annuler les modifications?",
"Avbryte redigering?",
- "Peru muokkaus?",
+ "Perutaanko muokkaus?",
"Zakonczyc montaz?",
"żCancelar modificación?",
"Akirosi kopsimatos?",
"Avbryta redigeringen?",
"Opresc editarea?",
"Vágást befejezni?",
- "Cancel.lar l'edició?",
+ "Cancel·lar l'edició?",
},
{ "Really restart?",
"Wirklich neu starten?",
@@ -864,14 +864,14 @@ const tI18nPhrase Phrases[] = {
"Tem a certeza que quer reiniciar?",
"Redémarrer?",
"Vil du virkelig starte pĺ nytt?",
- "Käynnistä uudelleen?",
+ "Käynnistetäänkö uudelleen?",
"Rzeczywiscie nowy start?",
"żDe verdad reiniciar?",
"Na gini sigoura epanekinisi?",
"Vill du verkligen starta om?",
"Esti sigur de repornire?",
"Tényleg újraindítani?",
- "Segur que vols reiniciar?",
+ "Segur que voleu reiniciar?",
},
{ "Recording - restart anyway?",
"Aufnahme läuft - trotzdem neu starten?",
@@ -888,7 +888,7 @@ const tI18nPhrase Phrases[] = {
"Inspelning pĺgĺr, vill du ändĺ starta om?",
"In inregistrare - repornesc?",
"Felvétel folyamatban van - mégis újraindítani?",
- "Estic gravant - reiniciar de totes maneres?"
+ "Gravant - Reiniciar de totes maneres?",
},
{ "Recording - shut down anyway?",
"Aufnahme läuft - trotzdem ausschalten?",
@@ -939,7 +939,7 @@ const tI18nPhrase Phrases[] = {
"Tryck valfri knapp för att ĺterkalla avstängningen",
"Apasa orice tasta pentru a anula inchiderea",
"Nyomj egy gombot a leállás megállításához",
- "Prem qualsevol tecla per cancel.lar l'aturada",
+ "Prem qualsevol tecla per cancel·lar l'aturada",
},
// Channel parameters:
{ "Name",
@@ -996,7 +996,7 @@ const tI18nPhrase Phrases[] = {
{ "Source",
"Quelle",
"Pozicija",
- "",//TODO
+ "Sorgente",
"",//TODO
"",//TODO
"Source",
@@ -1052,7 +1052,7 @@ const tI18nPhrase Phrases[] = {
"PID Áudio (1)",
"PID Audio (1)",
"Apid1",
- "Ääni PID (1)",
+ "Ääni PID1",
"Apid1",
"Apid1",
"Apid1",
@@ -1067,9 +1067,9 @@ const tI18nPhrase Phrases[] = {
"Apid2",
"Apid2",
"Apid2",
- "PID Áudio (2)",
+ "PID Audio (2)",
"Apid2",
- "Ääni PID (2)",
+ "Ääni PID2",
"Apid2",
"Apid2",
"Apid2",
@@ -1086,7 +1086,7 @@ const tI18nPhrase Phrases[] = {
"PID AC3 (1)",
"PID AC3 (1)",
"AC3pid1",
- "AC3 PID (1)",
+ "Dolby PID1",
"Dpid1",
"Dpid1",
"Dpid1",
@@ -1103,7 +1103,7 @@ const tI18nPhrase Phrases[] = {
"PID AC3 (2)",
"PID AC3 (2)",
"AC3pid2",
- "AC3 PID (2)",
+ "Dolby PID2",
"Dpid2",
"Dpid2",
"Dpid2",
@@ -1137,7 +1137,7 @@ const tI18nPhrase Phrases[] = {
"Encriptaçăo",
"Cryptage",
"Kortleser",
- "Salauskortti",
+ "Salaus",
"CA",
"CA",
"CA",
@@ -1186,7 +1186,7 @@ const tI18nPhrase Phrases[] = {
"Bandwidth",
"Bandwidth",
"Bandwidth",
- "Bandwidth",
+ "Bande passante",
"Bandwidth",
"Kaistanleveys",
"Bandwidth",
@@ -1195,7 +1195,7 @@ const tI18nPhrase Phrases[] = {
"Bandbredd",
"Bandwidth",
"Bandwidth",
- "Ampla de banda",
+ "Amplada de banda",
},
{ "CoderateH",
"CoderateH",
@@ -1205,7 +1205,7 @@ const tI18nPhrase Phrases[] = {
"CoderateH",
"CoderateH",
"CoderateH",
- "Yläkoodinopeus", //Finnish - unsure about this
+ "Yläsuojaustaso",
"CoderateH",
"CoderateH",
"CoderateH",
@@ -1222,7 +1222,7 @@ const tI18nPhrase Phrases[] = {
"CoderateL",
"CoderateL",
"CoderateL",
- "Alakoodinopeus", //Finnish - unsure about this
+ "Alasuojaustaso",
"CoderateL",
"CoderateL",
"CoderateL",
@@ -1256,7 +1256,7 @@ const tI18nPhrase Phrases[] = {
"Transmission",
"Transmission",
"Transmission",
- "Lähetys", //Finnish - unsure about this
+ "Lähetystila",
"Transmission",
"Transmission",
"Transmission",
@@ -1273,7 +1273,7 @@ const tI18nPhrase Phrases[] = {
"Guard",
"Guard",
"Guard",
- "Suoja", //Finnish - unsure about this
+ "Suojaväli",
"Guard",
"Guard",
"Guard",
@@ -1288,7 +1288,7 @@ const tI18nPhrase Phrases[] = {
"Hierarchy",
"Hierarchy",
"Hierarchy",
- "Hierarchy",
+ "Hierarchie",
"Hierarchy",
"Hierarkia",
"Hierarchy",
@@ -1383,12 +1383,12 @@ const tI18nPhrase Phrases[] = {
"Slutar",
"Stop",
"Vége",
- "Final",
+ "Fi",
},
{ "Priority",
"Priorität",
"Prioriteta",
- "Priorita",
+ "Priorita'",
"Prioriteit",
"Prioridade",
"Priorité",
@@ -1417,7 +1417,7 @@ const tI18nPhrase Phrases[] = {
"Livstid",
"Durata",
"Élettartam",
- "Duració",
+ "Durada",
},
{ "File",
"Datei",
@@ -1508,7 +1508,7 @@ const tI18nPhrase Phrases[] = {
{ "Error while accessing recording!",
"Fehler beim Ansprechen der Aufzeichnung!",
"Napaka pri dostopu do posnetka!",
- "Errore nel tentativo di acc alla registrazione",
+ "Errore nell'accesso alla registrazione",
"Fout bij lezen opname!",
"Erro ao aceder ŕ gravaçăo",
"Impossible d'accčder ŕ l'enregistrement",
@@ -1525,7 +1525,7 @@ const tI18nPhrase Phrases[] = {
{ "Error while deleting recording!",
"Fehler beim Löschen der Aufzeichnung!",
"Napaka pri brisanju posnetka!",
- "Errore durante la canc del filmato!",
+ "Errore nel cancellare la registrazione!",
"Fout bij verwijderen opname!",
"Erro enquanto apagava uma gravaçăo!",
"Erreur de suppression de l'enregistrement!",
@@ -1559,7 +1559,7 @@ const tI18nPhrase Phrases[] = {
{ "No free DVB device to record!",
"Keine freie DVB-Karte zum Aufnehmen!",
"Ni proste DVB naprave za snemanje!",
- "Nessuna card DVB disp per registrare!",
+ "Nessuna periferica DVB disponibile per registrare!",
"Geen vrije DVB kaart om op te nemen!",
"Nenhuma placa DVB disponivel para gravar!",
"Pas de carte DVB disponible pour l'enregistrement!",
@@ -1576,7 +1576,7 @@ const tI18nPhrase Phrases[] = {
{ "Channel not available!",
"Kanal nicht verfügbar!",
"Kanal ni razpolozljiv!",
- "",//TODO
+ "Canale non disponibile!",
"",//TODO
"",//TODO
"Chaîne non disponible!",
@@ -1593,7 +1593,7 @@ const tI18nPhrase Phrases[] = {
{ "Channel settings are not unique!",
"Kanaleinstellungen sind nicht eindeutig!",
"Nastavitve kanala niso edinstvene!",
- "",//TODO
+ "Paramentri Canale non unici!",
"",//TODO
"",//TODO
"Caractéristiques des chaînes ne sont pas uniques",
@@ -1632,7 +1632,7 @@ const tI18nPhrase Phrases[] = {
"Impossível iniciar modo de transferęncia!",
"Impossible d'utiliser le mode transfert!",
"Kan ikke starte transfer modus!",
- "Käsittämättömiä teknisiä ongelmia!", //Finnish - unsure about this ;-)
+ "Siirtotilan aloitus epäonnistui!",
"Tryb transferowy jest niemozliwy!",
"ˇNo puedo iniciar modo de transferencia!",
"Adinamia ekinisis katastasis metaforas!",
@@ -1644,7 +1644,7 @@ const tI18nPhrase Phrases[] = {
{ "No editing marks defined!",
"Keine Schnittmarken gesetzt!",
"Nobena tocka ni definirana!",
- "",//TODO
+ "Nessun marcatore di modifica definito!",
"",//TODO
"",//TODO
"Pas de marques d'édition définies!",
@@ -1656,12 +1656,12 @@ const tI18nPhrase Phrases[] = {
"Det finns inga redigeringsmärken",//TODO
"",//TODO
"",//TODO
- "",//TODO
+ "No hi ha marques d'edició definides",
},
{ "Can't start editing process!",
"Schnitt kann nicht gestartet werden!",
"Ne morem zaceti urejanja!",
- "Imposs iniziare processo di modifica",
+ "Impossibile iniziare processo di modifica!",
"Kan niet beginnen met bewerken!",
"Năo pode iniciar a modificaçăo!",
"Impossible de commencer le montage!",
@@ -1678,7 +1678,7 @@ const tI18nPhrase Phrases[] = {
{ "Editing process already active!",
"Schnitt bereits aktiv!",
"Urejanje je ze aktivno!",
- "Processo di modifica gia` attivo",
+ "Processo di modifica gia` attivo!",
"Bewerken is al actief!",
"Processo de modificaçăo já activo!",
"Montage déjŕ en cours!",
@@ -1695,7 +1695,7 @@ const tI18nPhrase Phrases[] = {
{ "Can't shutdown - option '-s' not given!",
"Shutdown unmöglich - Option '-s' fehlt!",
"Zaustavitev ni izvedljiva - opcija '-s' ni podana!",
- "Impossibile spegnere - parametro '-s' non passato",
+ "Impossibile spegnere - parametro '-s' non passato!",
"Shutdown onmogelijk - Optie '-s' ontbreekt!",
"Impossível desligar - falta a opçăo '-s'!",
"Arręt impossible - option '-s' absente!",
@@ -1707,7 +1707,7 @@ const tI18nPhrase Phrases[] = {
"Kan inte avsluta, mĺste använda parameter '-s'",
"Nu pot opri calculatorul - vezi optiunea '-s'",
"A leállítás nem lehetséges - Opció '-s' hiányzik!",
- "No puc apagar, falta la opció -s !"
+ "No puc apagar, falta la opció -s !",
},
{ "Low disk space!",
"Platte beinahe voll!",
@@ -1724,17 +1724,17 @@ const tI18nPhrase Phrases[] = {
"Lĺgt diskutrymme!",
"Spatiu scazut pe disc!",
"A merev lemez majdnem tele!",
- "Disc gairebé plč!",
+ "Disc gairebé ple!",
},
{ "Can't open CAM menu!",
"CAM-Menü kann nicht geöffnet werden!",
"Ne morem odpreti CAM menija!",
- "",//TODO
+ "Impossibile aprire il menu CAM!",
"",//TODO
"",//TODO
"Impossible d'ouvrir le menu CAM!",
"",//TODO
- "Salausmoduuli ei valittavissa",
+ "Salausmoduulin valikko ei saatavilla",
"",//TODO
"ˇNo pudeo acceder al menú de la CAM!",
"Den mpori na aniksi to CAM menou!",
@@ -1746,7 +1746,7 @@ const tI18nPhrase Phrases[] = {
{ "Can't reset CAM!",
"CAM-Reset fehlgeschlagen!",
"Ne morem resetirati CAM-a",
- "",//TODO
+ "Impossibile reimpostare il modulo CAM!",
"",//TODO
"",//TODO
"Impossible de réinitialiser la CAM!",
@@ -1763,7 +1763,7 @@ const tI18nPhrase Phrases[] = {
{ "CAM has been reset",
"CAM wurde zurückgesetzt!",
"CAM je resetiran!",
- "",//TODO
+ "Modulo CAM reimpostato!",
"",//TODO
"",//TODO
"La CAM a été réinitialisée",
@@ -1854,7 +1854,7 @@ const tI18nPhrase Phrases[] = {
"CICAM",
"Accčs conditionnel",
"CICAM",
- "CICAM",
+ "CI-moduuli",
"CICAM",
"CICAM",
"CICAM",
@@ -1951,12 +1951,12 @@ const tI18nPhrase Phrases[] = {
{ "Restart",
"Neustart",
"Ponoven zagon",
- "Restart",
+ "Riavvio",
"Herstart",
"Reiniciar",
"Redémarrer",
"Start pĺ nytt",
- "Uudelleenkäynnistys"
+ "Käynnistä uudelleen",
"Zastartowac",
"Reiniciar",
"Epanekinisi",
@@ -1986,7 +1986,7 @@ const tI18nPhrase Phrases[] = {
{ "Setup.OSD$Width",
"Breite",
"Sirina",
- "Largh OSD",
+ "Larghezza OSD",
"Breedte",
"Largura",
"Largeur",
@@ -2003,7 +2003,7 @@ const tI18nPhrase Phrases[] = {
{ "Setup.OSD$Height",
"Höhe",
"Visina",
- "Altezz OSD",
+ "Altezza OSD",
"Hoogte",
"Altura",
"Hauteur",
@@ -2032,12 +2032,12 @@ const tI18nPhrase Phrases[] = {
"Tid för meddelanden (sek)",
"Timp afisare mesaj (sec)",
"Információ feltüntetésének idötartama",
- "Duració dels missatges (s)",
+ "Durada dels missatges (s)",
},
{ "Setup.OSD$Channel info position",
"Kanal-Info Position",
"Pozicija informacije o kanalu",
- "Posizione info canale",
+ "Posizione informazioni canale",
"Kanaal info positie",
"Posiçăo de info dos canais",
"Position infos chaînes",
@@ -2054,7 +2054,7 @@ const tI18nPhrase Phrases[] = {
{ "Setup.OSD$Info on channel switch",
"Info beim Kanalwechsel",
"Pokazi naziv kanala",
- "Vis info nel cambio canale",
+ "Mostra info al cambio canale",
"Kanaal info tonen",
"Mostrar info ao mudar de Canal",
"Affichage progr. en cours",
@@ -2071,12 +2071,12 @@ const tI18nPhrase Phrases[] = {
{ "Setup.OSD$Scroll pages",
"Seitenweise scrollen",
"Drsni meni",
- "Scrolla pagina nel menu",
+ "Scorri pagina nel menu",
"Scrollen per pagina",
"Scroll da página no menu",
"Scrolling par pages",
"Rask rulling i menyer",
- "Valikkojen selaus",
+ "Valikkojen sivutus",
"Przesuwac stronami",
"Desplazar página entera",
"Kilisi selidas",
@@ -2117,12 +2117,12 @@ const tI18nPhrase Phrases[] = {
"Kataloger för inspelningar",
"Directoare inregistrari",
"Felvételek listája",
- "Gravacions en sub-carpetes",
+ "Gravacions en subcarpetes",
},
{ "Setup.EPG$EPG scan timeout (h)",
"Zeit bis EPG Scan (h)",
"Cas do EPG pregleda (h)",
- "Timeout EPG (h)",
+ "Timeout scansione EPG (h)",
"EPG-scan Timeout (h)",
"Expirou o EPG (h)",
"Inactivité avant rech. EPG (h)",
@@ -2139,7 +2139,7 @@ const tI18nPhrase Phrases[] = {
{ "Setup.EPG$EPG bugfix level",
"EPG Fehlerbereinigung",
"Nivo za popravilo EPG napak",
- "EPG livello corr",
+ "Livello correzione EPG",
"EPG foutcorrectieniveau",
"Nível de correctçăo EPG",
"Niveau de correction EPG",
@@ -2156,7 +2156,7 @@ const tI18nPhrase Phrases[] = {
{ "Setup.EPG$Set system time",
"Systemzeit stellen",
"Nastavi sistemski cas",
- "Settaggio orario auto",
+ "Settaggio orario automatico",
"Systeem klok instellen",
"Ajustar relógio do sistema",
"Ajuster l'heure du systčme",
@@ -2229,7 +2229,7 @@ const tI18nPhrase Phrases[] = {
"Limite de bandas LNB (MHz)",
"Limite de bandes LNB (MHz)",
"LO-grensefrekvens (MHz)",
- "SLOF (MHz)", //Finnish - unsure about this
+ "LNB rajataajuus (MHz)",
"SLOF (MHz)",
"SLOF (MHz)",
"SLOF (MHz)",
@@ -2246,7 +2246,7 @@ const tI18nPhrase Phrases[] = {
"Frequęncia base LNB (MHz)",
"Fréquence basse LNB (MHz)",
"LO-frekvens i lavbĺndet (MHz)",
- "LNB alataajuus (MHz)",
+ "LNB alempi taajuus (MHz)",
"Dolna czestotliwosc LNB (MHz)",
"Frecuencia baja LNB (MHz)",
"Kato LNB-Sixnotita (MHz)",
@@ -2263,7 +2263,7 @@ const tI18nPhrase Phrases[] = {
"Frequęncia alta LNB (MHz)",
"Fréquence haute LNB (MHz)",
"LO-frekvens i hřybĺndet (MHz)",
- "LNB ylätaajuus (MHz)",
+ "LNB ylempi taajuus (MHz)",
"Gorna czestotliwosc LNB (MHz)",
"Frecuencia alta LNB (MHz)",
"Ano LNB-Sixnotita (MHz)",
@@ -2297,7 +2297,7 @@ const tI18nPhrase Phrases[] = {
"CICAM DVB",
"Accčs conditionnel",
"CICAM DVB",
- "CICAM DVB", //Finnish - unsure about this "Salausmoduuli"
+ "CI-moduuli DVB",
"CICAM DVB",
"CICAM DVB",
"CICAM DVB",
@@ -2309,7 +2309,7 @@ const tI18nPhrase Phrases[] = {
{ "Setup.Recording$Margin at start (min)",
"Zeitpuffer bei Anfang (min)",
"Premor pred zacetkom (min)",
- "Min margine inizio (min)",
+ "Margine iniziale (min)",
"Tijd marge begin (min)",
"Margem inicial (min)",
"Marge antérieure (min)",
@@ -2321,12 +2321,12 @@ const tI18nPhrase Phrases[] = {
"Marginal för start (min)",
"Margine la pornire (min)",
"Idöeltolódás a kezdésnél (min)",
- "Iniciar la gravació avans de (min)",
+ "Marge d'inici de gravació (min)",
},
{ "Setup.Recording$Margin at stop (min)",
"Zeitpuffer bei Ende (min)",
"Premor za koncem (min)",
- "Min margine fine (min)",
+ "Margine finale (min)",
"Tijd marge eind (min)",
"Margem final (min)",
"Marge postérieure (min)",
@@ -2338,7 +2338,7 @@ const tI18nPhrase Phrases[] = {
"Marginal för stopp (min)",
"Margine la oprire (min)",
"Idöeltolódás a befejezésnél",
- "Acavar la gravació després de (min)",
+ "Marge de fi de gravació (min)",
},
{ "Setup.Recording$Primary limit",
"Primär-Limit",
@@ -2346,9 +2346,9 @@ const tI18nPhrase Phrases[] = {
"Limite primario",
"Eerste grens",
"Limite Primário",
- "Premičre limite",
+ "Limite primaire",
"Prioritetsgrense HovedDVB",
- "Päälimitti", //Finnish - unsure about this ;-)
+ "Päävastaanottimen prioriteetti",
"Pierwotny limit",
"Límite primario",
"Protevon orio",
@@ -2365,7 +2365,7 @@ const tI18nPhrase Phrases[] = {
"Prioridade por defeito",
"Priorité par défaut",
"Normal prioritet (Timer)",
- "Oletusprioriteetti",
+ "Tallenteen oletusprioriteetti",
"Priorytet pierwotny",
"Prioridad predefinida",
"Protereotita",
@@ -2377,24 +2377,24 @@ const tI18nPhrase Phrases[] = {
{ "Setup.Recording$Default lifetime (d)",
"Default Lebensdauer (d)",
"Osnovni zivljenski cas (d)",
- "Durata predefinita (d)",
+ "Durata predefinita (gg)",
"Standaard levensduur (d)",
"Validade por defeito (d)",
"Durée de vie par défaut (j)",
"Normal levetid timer (d)",
- "Oletuselinikä (d)",
+ "Tallenteen oletuselinikä (d)",
"Pierwotna trwalosc (d)",
"Duración predefinida",
"Xronos zois",
"Normal livstid (dagar)",
"Durata predefinita",
"Default élettartam",
- "Duració predefinida",
+ "Durada predefinida",
},
{ "Setup.Recording$Pause priority",
"Pause Priorität",
"Prioriteta pavze",
- "",// TODO
+ "Priorita' di pausa",
"",// TODO
"",// TODO
"Priorité des pauses",
@@ -2411,7 +2411,7 @@ const tI18nPhrase Phrases[] = {
{ "Setup.Recording$Pause lifetime (d)",
"Pause Lebensdauer (d)",
"Cas pavze (d)",
- "",// TODO
+ "Durata pausa (gg)",
"",// TODO
"",// TODO
"Durée de vie des pauses (j)",
@@ -2423,7 +2423,7 @@ const tI18nPhrase Phrases[] = {
"Livstid för direktinspelning (dagar)",
"",// TODO
"",// TODO
- "Duració de la pausa (d)",
+ "Durada de la pausa (d)",
},
{ "Setup.Recording$Use episode name",
"Episodenname verwenden",
@@ -2479,7 +2479,7 @@ const tI18nPhrase Phrases[] = {
{ "Setup.Recording$Instant rec. time (min)",
"Dauer der Direktaufzeichnung (min)",
"Cas direktnega snemanja (min)",
- "",//TODO
+ "Tempo registrazione istantanea (min)",
"",//TODO
"",//TODO
"Durée enregistr. immédiat (min)",
@@ -2496,7 +2496,7 @@ const tI18nPhrase Phrases[] = {
{ "Setup.Recording$Record Dolby Digital",
"Dolby Digital Ton aufzeichnen",
"Posnemi dolby digital",
- "Registra dolby digital",
+ "Registra Dolby Digital",
"Dolby Digital geluid opnamen",
"Gravar em Dolby Digital",
"Enregistrer en Dolby Digital",
@@ -2508,7 +2508,7 @@ const tI18nPhrase Phrases[] = {
"Spela in ljudet med Dolby Digital",
"Inregistreaza Dolby Digital",
"Dolby Digitál felvétel",
- "Gravar el sň en Dolby Digital",
+ "Gravar el so en Dolby Digital",
},
{ "Setup.Recording$Max. video file size (MB)",
"Max. Video Dateigröße (MB)",
@@ -2518,14 +2518,14 @@ const tI18nPhrase Phrases[] = {
"Tamanho máximo dos ficheiros (MB)",
"Taille maxi des fichiers (MB)",
"Maksimal střrrelse pĺ videofiler (MB)",
- "Suurin tiedostokoko (MB)",
+ "Suurin tiedostokoko (Mt)",
"Maks. wielkosc pliku (MB)",
"Tamańo máx. de fichero (MB)",
"Megisto megethos arxeiou (MB)",
"Maximal filstorlek för inspelning (MB)",
"Dimensiune maxima a fisierului video (MB)",
"Max. video File-terjedelem (MB)",
- "Tamany mŕxim de l'arxiu (MB)",
+ "Mida mŕxima de l'arxiu (MB)",
},
{ "Setup.Recording$Split edited files",
"Editierte Dateien aufteilen",
@@ -2533,7 +2533,7 @@ const tI18nPhrase Phrases[] = {
"Dividi i file modificati",
"Bewerkte files opdelen",
"Quebrar ficheiros",
- "Séparer les séquences",
+ "Séparer les séquences éditées",
"Splitt redigerte filer",
"Jaottele muokatut tallenteet",
"Dzielic montowane pliki",
@@ -2559,7 +2559,7 @@ const tI18nPhrase Phrases[] = {
"Multispeed mode",
"Mod multi-rata",
"MultiSpeed funkció",
- "Mode de multi-velocitat",
+ "Mode de multivelocitat",
},
{ "Setup.Replay$Show replay mode",
"Wiedergabestatus anzeigen",
@@ -2584,16 +2584,16 @@ const tI18nPhrase Phrases[] = {
"Resume ID",// TODO
"Resume ID",// TODO
"Resume ID",// TODO
+ "ID de reprise",
"Resume ID",// TODO
- "Resume ID",// TODO
- "Jatko ID", //Finnish - unsure about this
+ "Tallenteen paluutunniste",
"Resume ID",// TODO
"Continuar ID",
"Resume ID",// TODO
"Ĺteruppta ID",
"Resume ID",// TODO
"Resume ID",// TODO
- "Continuar ID",
+ "ID de Continuar",
},
{ "Setup.Miscellaneous$Min. event timeout (min)",
"Mindest Event Pause (min)",
@@ -2603,7 +2603,7 @@ const tI18nPhrase Phrases[] = {
"Período mínimo de pausa (min)",
"MinEventTimeout (min)",
"Minste hendelsespause (min)",
- "Tapahtuman odotusaika (min)", //Finnish - unsure about this
+ "Tapahtuman odotusaika (min)",
"Min. czas do nast. akcji (Event) (min)",
"Tiempo mínimo pausa (min)",
"Elaxistos Xronos paremvolis (lepta)",
@@ -2620,7 +2620,7 @@ const tI18nPhrase Phrases[] = {
"Período mínimo de inactividade (min)",
"Durée minimale d'inact. (min)",
"Minimumstid med inaktivitet (min)",
- "Käyttäjätoiminnon odotusaika (min)", //Finnish - unsure about this
+ "Käyttäjätoiminnon odotusaika (min)",
"Min. brak aktywnosci uzytkownika (min)",
"Tiempo mínimo inactividad (min)",
"Elaxistos xronos mi xrisis (lepta)",
@@ -2650,7 +2650,7 @@ const tI18nPhrase Phrases[] = {
{ "MTWTFSS",
"MDMDFSS",
"PTSCPSN",
- "DLMMGVS",
+ "LMMGVSD",
"MDWDVZZ",
"STQQSSD",
"LMMJVSD",
@@ -2662,7 +2662,7 @@ const tI18nPhrase Phrases[] = {
"MTOTFLS",
"LMMJVSD",
"HKSCPSV",
- "LMXJVSU",
+ "LMCJVSG",
},
{ "MonTueWedThuFriSatSun", // must all be 3 letters!
"MonDieMitDonFreSamSon",
@@ -2679,16 +2679,16 @@ const tI18nPhrase Phrases[] = {
"MĺnTisOnsTorFreLörSön",
"LunMarMieJoiVinSimDum",
"HétKedSzeCsüPénSzoVas",
- "DllDimDmcDijDivDisDiu",
+ "Dl Dm Dc Dj Dv Ds Dg ",
},
// The allowed characters in strings:
{ " abcdefghijklmnopqrstuvwxyz0123456789-.#~",
" aäbcdefghijklmnoöpqrstuüvwxyz0123456789-.#~",
" abcdefghijklmnopqrstuvwxyz0123456789-.#~",
+ " aŕbcdeéčfghiîjklmnopqrstuůvwxyz0123456789-.#~",
"",// TODO
"",// TODO
- "",// TODO
- " aŕbcçdeéčęfghiîjklmnoôpqrstuůűvxyz0123456789-.#~",
+ " aŕbcçdeéčęfghiîjklmnoôpqrstuůűvwxyz0123456789-.#~",
"",// TODO
" abcdefghijklmnopqrstuvxyzĺäö0123456789-.#~",
"",// TODO
@@ -2737,7 +2737,7 @@ const tI18nPhrase Phrases[] = {
{ "Press any key on the RC unit",
"Eine Taste auf der FB drücken",
"Pritisnite tipko na upravljalcu",
- "Premere un tasto nell'unita` RC",
+ "Premere un tasto dell'unita` RC",
"Druk op een willekeurige knop",
"Pressione qualquer tecla do telecomando",
"Appuyer sur une touche de la télécommande",
@@ -2749,7 +2749,7 @@ const tI18nPhrase Phrases[] = {
"Tryck valfri tangent pĺ fjärrkontrollen",
"Apasati o tasta pe telecomanda",
"Nyomjon meg egy gombot a távirányítón",
- "Premi qualsevol tecla del comandament",
+ "Premeu qualsevol tecla del comandament",
},
{ "RC code detected!",
"FB Code erkannt!",
@@ -2783,7 +2783,7 @@ const tI18nPhrase Phrases[] = {
"Tryck inte pĺ nĺgon knapp...",
"Nu apasati nicio tasta...",
"Ne nyomjon meg gombot...",
- "No premi cap tecla...",
+ "No premeu cap tecla...",
},
{ "Phase 2: Learning specific key codes",
"Phase 2: Einzelne Tastencodes lernen",
@@ -2817,7 +2817,7 @@ const tI18nPhrase Phrases[] = {
"Tryck pĺ knappen för '%s'",
"Apasati tasta pentru '%s'",
"'%s' gomb megnyomása",
- "Premi una tecla per '%s'",
+ "Premeu una tecla per '%s'",
},
{ "Press 'Up' to confirm",
"'Auf' drücken zum Bestätigen",
@@ -2834,12 +2834,12 @@ const tI18nPhrase Phrases[] = {
"Tryck 'Upp' för att bekräfta",
"Apsati 'Sus' pentru confirmare",
"'Fel' megnyomása az elfogadáshoz",
- "Premi 'Amunt' per confirmar",
+ "Premeu 'Amunt' per confirmar",
},
{ "Press 'Down' to continue",
"'Ab' drücken zum Weitermachen",
"Pritisnite tipko 'Dol' za nadaljevanje",
- "Premere 'Giu' per confermare",
+ "Premere 'Giu' per continuare",
"Druk 'Omlaag' om verder te gaan",
"Pressione 'Baixo' para continuar",
"Appuyer sur 'Bas' pour continuer",
@@ -2851,7 +2851,7 @@ const tI18nPhrase Phrases[] = {
"Tryck 'Ner' för att bekräfta",
"Apasati jos pentru continuare",
"'Le' megnyomása a folytatáshoz",
- "Premi 'Avall' per continuar",
+ "Premeu 'Avall' per continuar",
},
{ "(press 'Up' to go back)",
"('Auf' drücken um zurückzugehen)",
@@ -2868,12 +2868,12 @@ const tI18nPhrase Phrases[] = {
"(Tryck 'Upp' för att backa)",
"(Apsati 'Sus' pentru revenire)",
"(´Fel' megnyomása a visszatéréshez)",
- "(Premi 'Amunt' per retornar)",
+ "(Premeu 'Amunt' per retornar)",
},
{ "(press 'Down' to end key definition)",
"('Ab' drücken zum Beenden)",
"(pritisnite 'Dol' za konec)",
- "('Giu' per finire la definiz tasti)",
+ "('Giu' per finire la definizione tasti)",
"(Druk 'Omlaag' om te beeindigen)",
"(Pressione 'Baixo' para terminar a definiçăo)",
"(Appuyer sur 'Bas' pour terminer)",
@@ -2885,12 +2885,12 @@ const tI18nPhrase Phrases[] = {
"(Tryck 'Ner' för att avsluta knapp definition)",
"(Apasati 'Jos' pentru terminare)",
"('Le' megnyomása a befejezéshez)",
- "(Premi 'Avall' per finalitzar l'aprenentatge)",
+ "(Premeu 'Avall' per finalitzar l'aprenentatge)",
},
{ "(press 'Menu' to skip this key)",
"('Menü' drücken zum Überspringen)",
"pritisnite 'Meni' za preskok te tipke",
- "",// TODO
+ "(premere 'Menu' per saltare questo tasto)",
"",// TODO
"",// TODO
"('Menu' pour passer cette touche)",
@@ -2902,12 +2902,12 @@ const tI18nPhrase Phrases[] = {
"Tryck 'Meny' för att hoppa över denna knapp.",
"",// TODO
"",// TODO
- "Premi 'Menu' per obviar aquesta tecla",
+ "Premeu 'Menú' per obviar aquesta tecla",
},
{ "Phase 3: Saving key codes",
"Phase 3: Codes abspeichern",
"Faza 3: Shranjevanje kod tipk",
- "Fase 3: Salvataggio key codes",
+ "Fase 3: Salvataggio codici tasti",
"Fase 3: Opslaan toets codes",
"Fase 3: A salvar os códigos das teclas",
"Phase 3: Sauvegarde des codes des touches",
@@ -2936,7 +2936,7 @@ const tI18nPhrase Phrases[] = {
"Tryck 'Upp' för att spara, 'Ner' för att avsluta",
"Apsati 'Sus' pentru salvare, 'Jos' pentru anulare",
"'Fel' mentés, 'Le´ mégse",
- "Premi 'Amunt' per guardar, 'Avall' per anul.lar",
+ "Premeu 'Amunt' per guardar, 'Avall' per anul·lar",
},
// Key names:
{ "Up",
@@ -3005,7 +3005,7 @@ const tI18nPhrase Phrases[] = {
"Ok",
"Ok",
"Ok",
- "Ok",
+ "D'acord",
},
{ "Back",
"Zurück",
@@ -3056,7 +3056,7 @@ const tI18nPhrase Phrases[] = {
"Höger",
"Dreapta",
"Jobbra",
- "Dreta"
+ "Dreta",
},
{ "Red",
"Rot",
@@ -3073,7 +3073,7 @@ const tI18nPhrase Phrases[] = {
"Röd",
"Rosu",
"Piros",
- "Vermell"
+ "Vermell",
},
{ "Green",
"Grün",
@@ -3129,7 +3129,7 @@ const tI18nPhrase Phrases[] = {
{ "Play",
"Wiedergabe",
"Predvajaj",
- "",// TODO
+ "Riproduci",
"",// TODO
"",// TODO
"Lecture",
@@ -3146,7 +3146,7 @@ const tI18nPhrase Phrases[] = {
{ "Pause",
"Pause",
"Pavza",
- "",// TODO
+ "Pausa",
"",// TODO
"",// TODO
"Pause",
@@ -3163,24 +3163,24 @@ const tI18nPhrase Phrases[] = {
{ "Stop",
"Stop",
"Ustavi",
- "",// TODO
+ "Stop",
"",// TODO
"Stop",
- "Arręt",
+ "Stop",
"",// TODO
- "Pysäytä",
+ "Lopeta",
"",// TODO
"Parar",
"Terma",
"Stoppa",
"",// TODO
"",// TODO
- "Parar",
+ "Aturar",
},
{ "Record",
"Aufnehmen",
"Snemaj",
- "",// TODO
+ "Registra",
"",// TODO
"",// TODO
"Enregistrement",
@@ -3197,7 +3197,7 @@ const tI18nPhrase Phrases[] = {
{ "FastFwd",
"Vorlauf",
"Hitro naprej",
- "",// TODO
+ "Avanti Veloce",
"",// TODO
"",// TODO
"Avance rapide",
@@ -3214,7 +3214,7 @@ const tI18nPhrase Phrases[] = {
{ "FastRew",
"Rücklauf",
"Hitro nazaj",
- "",// TODO
+ "Indietro Veloce",
"",// TODO
"",// TODO
"Retour rapide",
@@ -3234,7 +3234,7 @@ const tI18nPhrase Phrases[] = {
"Power",
"Uitschakelen",
"Ligar",
- "Arręt",
+ "Veille", // This one caused some bug reports ;)
"Power",
"Virtakytkin",
"Wylaczyc",
@@ -3243,12 +3243,12 @@ const tI18nPhrase Phrases[] = {
"Pĺ/Av",
"Pornit",
"Kikapcsolni",
- "Parar",
+ "Aturar",
},
{ "Channel+",
"Kanal+",
"Kanal+",
- "",// TODO
+ "Canale +",
"",// TODO
"",// TODO
"Chaîne+",
@@ -3265,7 +3265,7 @@ const tI18nPhrase Phrases[] = {
{ "Channel-",
"Kanal-",
"Kanal-",
- "",// TODO
+ "Canale -",
"",// TODO
"",// TODO
"Chaîne-",
@@ -3282,7 +3282,7 @@ const tI18nPhrase Phrases[] = {
{ "Volume+",
"Lautstärke+",
"Glasnost+",
- "Volume+",
+ "Volume +",
"Volume+",
"Volume+",
"Volume+",
@@ -3299,7 +3299,7 @@ const tI18nPhrase Phrases[] = {
{ "Volume-",
"Lautstärke-",
"Glasnost-",
- "Volume-",
+ "Volume -",
"Volume-",
"Volume-",
"Volume-",
@@ -3321,7 +3321,7 @@ const tI18nPhrase Phrases[] = {
"Sem som",
"Coupure du son",
"Lyd av",
- "Mykistä",
+ "Äänetön",
"Cisza",
"Mudo",
"Siopilo",
@@ -3368,7 +3368,7 @@ const tI18nPhrase Phrases[] = {
{ "off",
"aus",
"izklop",
- "",// TODO
+ "off",
"",// TODO
"off",
"",// TODO
@@ -3385,14 +3385,14 @@ const tI18nPhrase Phrases[] = {
{ "none",
"keine",
"nobeden",
- "",// TODO
+ "nessuno",
"",// TODO
"",// TODO
"aucun",
"",// TODO
"tyhjä",
"",// TODO
- "ninguno"
+ "ninguno",
"kanena",
"ingen",
"",// TODO
@@ -3402,7 +3402,7 @@ const tI18nPhrase Phrases[] = {
{ "auto",
"auto",
"avtomatsko",
- "",// TODO
+ "auto",
"",// TODO
"",// TODO
"auto",
@@ -3424,7 +3424,7 @@ const tI18nPhrase Phrases[] = {
"topo",
"haut",
"řvre",
- "ylä",
+ "yläreuna",
"gora",
"parte superior",
"pano",
@@ -3441,7 +3441,7 @@ const tI18nPhrase Phrases[] = {
"fundo",
"bas",
"nedre",
- "ala",
+ "alareuna",
"dol",
"parte inferior",
"kato",
@@ -3453,7 +3453,7 @@ const tI18nPhrase Phrases[] = {
{ "Disk",
"Disk",
"Disk",
- "Disk",
+ "Disco",
"Disk",
"Disk",
"Disque",
@@ -3465,7 +3465,7 @@ const tI18nPhrase Phrases[] = {
"Disk",
"Disc",
"Lemez",
- "Disc"
+ "Disc",
},
{ "free",
"frei",
@@ -3475,14 +3475,14 @@ const tI18nPhrase Phrases[] = {
"livre",
"restant",
"ledig",
- "vapaa",
+ "vapaana",
"pozostalo",
"libre",
"akoma",
"ledigt",
"liber",
"szabad",
- "lliure"
+ "lliure",
},
{ "Jump: ", // note the trailing blank
"Springen: ",
@@ -3499,7 +3499,7 @@ const tI18nPhrase Phrases[] = {
"Hopp: ",
"Salt: ",
"Ugrás: ",
- "Salta a:"
+ "Salta a:",
},
{ "Volume ", // note the trailing blank
"Lautstärke ",
@@ -3526,14 +3526,14 @@ const tI18nPhrase Phrases[] = {
" Parar reproduçăo",
" Arręter la lecture",
" Stopp avspilling",
- " Pysäytä toisto",
+ " Lopeta toisto",
" Zatrzymac odtwarzanie",
" Parar reprodución",
" Telos anametadosis",
" Avsluta uppspelning",
" Opreste redare",
" Lejátszást befejzni",
- " Parar la reproducció",
+ " Aturar la reproducció",
},
{ " Stop recording ", // note the leading and trailing blanks!
" Aufzeichnung beenden ",
@@ -3543,14 +3543,14 @@ const tI18nPhrase Phrases[] = {
" Parar gravaçăo ",
" Arręter l'enregistrement ",
" Stopp opptak fra ",
- " Pysäytä tallennus ",
+ " Lopeta tallennus ",
" Zatrzymac nagrywanie ",
" Parar grabación ",
" Telos egrafis ",
" Avsluta inspelning ",
" Opreste inregistrarea ",
" Felvételt befejezni ",
- " Parar la gravació ",
+ " Aturar la gravació ",
},
{ " Cancel editing", // note the leading blank!
" Schneiden abbrechen",
@@ -3594,7 +3594,7 @@ const tI18nPhrase Phrases[] = {
"Cima/Baixo para nova localizaçăo - Ok para mover",
"Haut/Bas -> nouvelle place - OK -> déplacer",
"Opp/Ned for ny plass - OK for ĺ flytte",
- "Ylös/Alas = liiku, OK = siirrä",
+ "'Ylös/Alas' uusi paikka - 'OK' hyväksy",
"Gora/Dol na nowa pozycje - Ok zmienia",
"Arriba/Abajo para el nuevo lugar - OK para mover",
"Pano/Kato gia nea thesi. meta OK",
@@ -3674,7 +3674,7 @@ const tI18nPhrase Phrases[] = {
{ "Pausing live video...",
"Live-Signal wird angehalten...",
"Ustavljanje predvajanja v zivo...",
- "",// TODO
+ "Pausa del canale in visione...",
"",// TODO
"",// TODO
"Pause de l'émission en direct...",
@@ -3686,12 +3686,12 @@ const tI18nPhrase Phrases[] = {
"Pausar direktinspelningen",
"",// TODO
"",// TODO
- "Pausa d'emissió en directe..."
+ "Pausa d'emissió en directe...",
},
{ "This plugin has no setup parameters!",
"Dieses Plugin hat keine Setup-Parameter!",
"Ta plugin nima nastavitvenih parametrov!",
- "",// TODO
+ "Questo plugin non ha parametri di setup!",
"",// TODO
"",// TODO
"Ce plugin n'a pas de paramčtres!",
diff --git a/menu.c b/menu.c
index 9fb3750..ecf2493 100644
--- a/menu.c
+++ b/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 1.249 2003/05/25 14:06:17 kls Exp $
+ * $Id: menu.c 1.253 2003/05/30 09:53:57 kls Exp $
*/
#include "menu.h"
@@ -1862,6 +1862,11 @@ eOSState cMenuRecordings::Delete(void)
if (timer) {
timer->Skip();
cRecordControls::Process(time(NULL));
+ if (timer->IsSingleEvent()) {
+ int Index = timer->Index();
+ Timers.Del(timer);
+ isyslog("timer %d deleted", Index + 1);
+ }
Timers.Save();
}
}
@@ -2636,7 +2641,8 @@ cDisplayChannel::cDisplayChannel(eKeys FirstKey)
lines = 0;
number = 0;
lastTime = time_ms();
- int EpgLines = Setup.ShowInfoOnChSwitch ? 5 : 1;
+ withInfo = Setup.ShowInfoOnChSwitch;
+ int EpgLines = withInfo ? 5 : 1;
Interface->Open(Setup.OSDwidth, Setup.ChannelInfoPos ? EpgLines : -EpgLines);
ProcessKey(FirstKey);
}
diff --git a/recording.c b/recording.c
index 7e68a79..06f6325 100644
--- a/recording.c
+++ b/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 1.79 2003/05/24 11:22:34 kls Exp $
+ * $Id: recording.c 1.80 2003/05/30 13:23:54 kls Exp $
*/
#include "recording.h"
@@ -769,6 +769,12 @@ void cRecordingUserCommand::InvokeCommand(const char *State, const char *Recordi
#define INDEXFILESUFFIX "/index.vdr"
+// The number of frames to stay off the end in case of time shift:
+#define INDEXSAFETYLIMIT 100 // frames
+
+// The maximum time to wait before giving up while catching up on an index file:
+#define MAXINDEXCATCHUP 8 // seconds
+
// The minimum age of an index file for considering it no longer to be written:
#define MININDEXAGE 3600 // seconds
@@ -852,47 +858,50 @@ bool cIndexFile::CatchUp(int Index)
{
// returns true unless something really goes wrong, so that 'index' becomes NULL
if (index && f >= 0) {
- if (Index < 0 || Index >= last) {
- struct stat buf;
- if (fstat(f, &buf) == 0) {
- if (time(NULL) - buf.st_mtime > MININDEXAGE) {
- // apparently the index file is not being written any more
- close(f);
- f = -1;
- return true;
- }
- int newLast = buf.st_size / sizeof(tIndex) - 1;
- if (newLast > last) {
- if (size <= newLast) {
- size *= 2;
- if (size <= newLast)
- size = newLast + 1;
- }
- index = (tIndex *)realloc(index, size * sizeof(tIndex));
- if (index) {
- int offset = (last + 1) * sizeof(tIndex);
- int delta = (newLast - last) * sizeof(tIndex);
- if (lseek(f, offset, SEEK_SET) == offset) {
- if (safe_read(f, &index[last + 1], delta) != delta) {
- esyslog("ERROR: can't read from index");
- free(index);
- index = NULL;
- close(f);
- f = -1;
- return true;
- }
- last = newLast;
- }
- else
- LOG_ERROR_STR(fileName);
- }
- else
- esyslog("ERROR: can't realloc() index");
- }
- }
- else
- LOG_ERROR_STR(fileName);
- }
+ for (int i = 0; i <= MAXINDEXCATCHUP && (Index < 0 || Index >= last); i++) {
+ struct stat buf;
+ if (fstat(f, &buf) == 0) {
+ if (time(NULL) - buf.st_mtime > MININDEXAGE) {
+ // apparently the index file is not being written any more
+ close(f);
+ f = -1;
+ break;
+ }
+ int newLast = buf.st_size / sizeof(tIndex) - 1;
+ if (newLast > last) {
+ if (size <= newLast) {
+ size *= 2;
+ if (size <= newLast)
+ size = newLast + 1;
+ }
+ index = (tIndex *)realloc(index, size * sizeof(tIndex));
+ if (index) {
+ int offset = (last + 1) * sizeof(tIndex);
+ int delta = (newLast - last) * sizeof(tIndex);
+ if (lseek(f, offset, SEEK_SET) == offset) {
+ if (safe_read(f, &index[last + 1], delta) != delta) {
+ esyslog("ERROR: can't read from index");
+ free(index);
+ index = NULL;
+ close(f);
+ f = -1;
+ break;
+ }
+ last = newLast;
+ }
+ else
+ LOG_ERROR_STR(fileName);
+ }
+ else
+ esyslog("ERROR: can't realloc() index");
+ }
+ }
+ else
+ LOG_ERROR_STR(fileName);
+ if (Index < last - (i ? 2 * INDEXSAFETYLIMIT : 0) || Index > 10 * INDEXSAFETYLIMIT) // keep off the end in case of "Pause live video"
+ break;
+ sleep(1);
+ }
}
return index != NULL;
}
@@ -940,7 +949,7 @@ int cIndexFile::GetNextIFrame(int Index, bool Forward, uchar *FileNumber, int *F
int d = Forward ? 1 : -1;
for (;;) {
Index += d;
- if (Index >= 0 && Index < last - ((Forward && StayOffEnd) ? 100 : 0)) {
+ if (Index >= 0 && Index < last - ((Forward && StayOffEnd) ? INDEXSAFETYLIMIT : 0)) {
if (index[Index].type == I_FRAME) {
if (FileNumber)
*FileNumber = index[Index].number;
diff --git a/vdr.1 b/vdr.1
index 86af51c..ca49acd 100644
--- a/vdr.1
+++ b/vdr.1
@@ -2,15 +2,15 @@
.\" ** The above line should force tbl to be a preprocessor **
.\" Man page for vdr
.\"
-.\" Copyright (C) 2002 Klaus Schmidinger
+.\" Copyright (C) 2003 Klaus Schmidinger
.\"
.\" You may distribute under the terms of the GNU General Public
.\" License as specified in the file COPYING that comes with the
.\" vdr distribution.
.\"
-.\" $Id: vdr.1 1.7 2003/05/03 16:16:05 kls Exp $
+.\" $Id: vdr.1 1.8 2003/05/29 11:58:28 kls Exp $
.\"
-.TH vdr 1 "3 May 2003" "1.1.30" "Video Disk Recorder"
+.TH vdr 1 "1 June 2003" "1.2.0" "Video Disk Recorder"
.SH NAME
vdr - the Video Disk Recorder
.SH SYNOPSIS
@@ -185,7 +185,7 @@ See the file \fICONTRIBUTORS\fR in the \fBvdr\fR source distribution.
.SH REPORTING BUGS
Report bugs to <vdr-bugs@cadsoft.de>.
.SH COPYRIGHT
-Copyright \(co 2002 Klaus Schmidinger.
+Copyright \(co 2003 Klaus Schmidinger.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
diff --git a/vdr.5 b/vdr.5
index 513bd5d..67bdc37 100644
--- a/vdr.5
+++ b/vdr.5
@@ -2,15 +2,15 @@
.\" ** The above line should force tbl to be a preprocessor **
.\" Man page for vdr file formats
.\"
-.\" Copyright (C) 2002 Klaus Schmidinger
+.\" Copyright (C) 2003 Klaus Schmidinger
.\"
.\" You may distribute under the terms of the GNU General Public
.\" License as specified in the file COPYING that comes with the
.\" vdr distribution.
.\"
-.\" $Id: vdr.5 1.18 2003/04/26 11:54:35 kls Exp $
+.\" $Id: vdr.5 1.20 2003/05/29 11:58:57 kls Exp $
.\"
-.TH vdr 5 "6 Dec 2002" "1.2.0" "Video Disk Recorder Files"
+.TH vdr 5 "1 Jun 2003" "1.2.0" "Video Disk Recorder Files"
.SH NAME
vdr file formats - the Video Disk Recorder Files
.SH DESCRIPTION
@@ -547,9 +547,7 @@ l l.
<channel name> @is the "name" as in 'channels.conf' (for information only, may be left out)
<start time> @is the time (as a time_t integer) in UTC when this event starts
<duration> @is the time (in seconds) that this event will take
-<table id> @is a hex number that indicates the table this event is contained\
-in (if this is left empty or 0 this event will not be overwritten\
-or modified by data that comes from the DVB stream)
+<table id> @is a hex number that indicates the table this event is contained in (if this is left empty or 0 this event will not be overwritten or modified by data that comes from the DVB stream)
<title> @is the title of the event
<subtitle> @is the subtitle (typically the name of the episode etc.)
<description> @is the description of the event (any '|' characters will be interpreted as newlines)
@@ -564,7 +562,7 @@ Written by Klaus Schmidinger.
.SH REPORTING BUGS
Report bugs to <vdr-bugs@cadsoft.de>.
.SH COPYRIGHT
-Copyright \(co 2002 Klaus Schmidinger.
+Copyright \(co 2003 Klaus Schmidinger.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
diff --git a/vdr.c b/vdr.c
index 8bb907c..6a6c35d 100644
--- a/vdr.c
+++ b/vdr.c
@@ -1,7 +1,7 @@
/*
* vdr.c: Video Disk Recorder main program
*
- * Copyright (C) 2000 Klaus Schmidinger
+ * Copyright (C) 2000, 2003 Klaus Schmidinger
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -20,9 +20,9 @@
*
* The author can be reached at kls@cadsoft.de
*
- * The project's page is at http://www.cadsoft.de/people/kls/vdr
+ * The project's page is at http://www.cadsoft.de/vdr
*
- * $Id: vdr.c 1.159 2003/05/24 15:17:38 kls Exp $
+ * $Id: vdr.c 1.160 2003/05/29 12:27:26 kls Exp $
*/
#include <getopt.h>