Version 2.1.8

VDR developer version 2.1.8 is now available at

       ftp://ftp.tvdr.de/vdr/Developer/vdr-2.1.8.tar.bz2

A 'diff' against the previous version is available at

       ftp://ftp.tvdr.de/vdr/Developer/vdr-2.1.7-2.1.8.diff

MD5 checksums:

1d2751e87def9b18b448513f24e635e9  vdr-2.1.8.tar.bz2
0487e037278f6f6684a7933674910f05  vdr-2.1.7-2.1.8.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.

From the HISTORY file:
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- Fixed "warning: invalid suffix on literal" with GCC 4.8 and C++11 (thanks to Joerg
  Bornkessel).
- Fixed the link to "svdrpsend (1)" in the vdr.1 man page (thanks to Chris Mayo).
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Updated the Romanian OSD texts (thanks to Lucian Muresan).
- Added functionality based on the "jumpplay" patch from Torsten Kunkel and Thomas
  Günther:
  + The new option "Setup/Replay/Pause replay when jumping to a mark" can be used to
    turn off pausing replay when jumping to an editing mark with the '9' key.
  + The new option "Setup/Replay/Skip edited parts" can be used to automatically skip
    the edited parts of a recording during replay, without the need to actually cut
    the recording.
  + The new option "Setup/Replay/Pause replay at last mark" can be used to make replay
    go into Pause mode when it has reached the last "end" mark.
  + The '8' key for testing an edited sequence now also jumps to the next *end*
    mark if "Setup/Replay/Skip edited parts" is active. This allows for testing edits
    in recordings that have actually been cut, as well as recordings that have not
    been cut, in case "Skip edited parts" is enabled.
- Added support for "Satellite Channel Routing" (SCR) according to EN50607, also
  known as "JESS" (thanks to Manfred Völkel and Frank Neumann).
- The keys '1' and '3' can now be used in replay mode to position an editing mark
  in "binary" mode (based on a patch from Rolf Ahrenberg, with modifications by Helmut
  Auer). See MANUAL, section "Editing a Recording".
- The Yellow button in the "Setup/CAM" menu can now be used to put the selected
  CAM into a mode where it remains assigned to a device that is tuned to the current
  channel until the smart card it contains is activated and the CAM thus starts to
  descramble (see MANUAL, section "Setup/CAM" for details).
- Updated the Estonian OSD texts (thanks to Arthur Konovalov).
- Added ARGSDIR to the ONEDIR section of Make.config.template (suggested by Derek
  Kelly).
- Made cRecording::GetResume() public (suggested by Stefan Braun).
- Fixed setting the read index in cDvbPlayer::Goto() in case Still is false.
- The function cDvbPlayer::Goto() now automatically calls Play() if Still is false.
- Added support for LCN (Logical Channel Numbers), which plugins may use to sort
  channels (thanks to Rolf Ahrenberg).
This commit is contained in:
Klaus Schmidinger 2015-02-01 14:55:00 +01:00 committed by Dieter Hametner
parent 2db7397542
commit 4ee983a294
54 changed files with 1636 additions and 205 deletions

View File

@ -624,6 +624,7 @@ Helmut Auer <vdr@helmutauer.de>
for helping to debug a problem with frame detection in MPEG-2 streams that have "bottom fields"
or varying GOP structures
for a patch that was used to implement the command line option --updindex
for modifying the "binary skip" patch to move editing marks
Jeremy Hall <jhall@UU.NET>
for fixing an incomplete initialization of the filter parameters in eit.c
@ -1192,6 +1193,8 @@ Rolf Ahrenberg <Rolf.Ahrenberg@sci.fi>
for adding support for "Pilot", "T2-System-Id" and "SISO/MISO" parameters
for fixing a problem with subtitles not being displayed because the broadcaster
doesn't set the data's version numbers as required by the DVB standard
for the "binary skip" patch
for adding support for LCN (Logical Channel Numbers)
Ralf Klueber <ralf.klueber@vodafone.com>
for reporting a bug in cutting a recording if there is only a single editing mark
@ -2139,6 +2142,7 @@ Thomas G
which results in using tr(FileNameChars)
for fixing handling "none" color entries in XPM files
for fixing displaying the frame number when setting an editing mark
for the "jumpplay" patch
David Woodhouse <dwmw2@infradead.org>
for his help in replacing the get/put_unaligned() macros from asm/unaligned.h with
@ -2677,6 +2681,7 @@ Torsten Kunkel <vdrml@tkunkel.de>
for pointing out that it was not obvious how to initiate internationalization
support for a plugin
for suggesting to add a section about "Logging" to PLUGINS.html
for the "jumpplay" patch
Michael Nival <mnival@club-internet.fr>
for translating OSD texts to the French language
@ -2824,6 +2829,7 @@ Derek Kelly <user.vdr@gmail.com>
are no short names at all
for reporting an incompatible change from DTV_DVBT2_PLP_ID to DTV_STREAM_ID in DVB API 5.8
for reporting a missing template for DVBDIR in Make.config.template
for suggesting to add ARGSDIR to the ONEDIR section of Make.config.template
Marcel Unbehaun <frostworks@gmx.de>
for adding cRecordingInfo::GetEvent()
@ -2969,6 +2975,7 @@ Dominik Strasser <dominik@die-strassers.de>
Joerg Bornkessel <hd_brummy@gentoo.org>
for adding LDFLAGS to the linker calls in the Makefiles
for fixing font handling with fontconfig 2.9.0 or newer
for fixing "warning: invalid suffix on literal" with GCC 4.8 and C++11
Andreas Oberritter <obi@opendreambox.org>
for suggesting to retrieve the include path to the freetype2 header files
@ -2981,6 +2988,7 @@ Frank Neumann <fnu@yavdr.org>
for suggesting to reduce the thread and I/O priority cCuttingThread::Action()
for reporting a problem with tuning timeouts when using SCR with multiple tuners
for fixing the German translation of "VDR will shut down in %s minutes"
for adding support for "Satellite Channel Routing" (SCR) according to EN50607 ("JESS")
Gerald Dachs <vdr@dachsweb.de>
for reporting a problem with checking for minimum line length of 21 characters in
@ -3045,6 +3053,7 @@ Frank Niederwipper <f.niederwipper@gmail.com>
Chris Mayo <aklhfex@gmail.com>
for reporting a problem with detecting frames on radio channels
for fixing the link to "svdrpsend (1)" in the vdr.1 man page
Dominic Evans <oldmanuk@gmail.com>
for making the SVDRP command LSTC accepts channel IDs
@ -3229,6 +3238,7 @@ Stefan Braun <louis.braun@gmx.de>
for reporting an endless loop in the DrawEllipse() functions for very small ellipses
for suggesting to add the menu category mcRecordingEdit for marking menus that edit
recording properties
for suggesting to make cRecording::GetResume() public
Jochen Dolze <vdr@dolze.de>
for changing cThread::SetIOPriority() from "best effort class" to "idle class" in order
@ -3243,6 +3253,7 @@ Seppo Ingalsuo <seppo.ingalsuo@iki.fi>
Manfred Völkel <mvoelkel@digitaldevices.de>
for suggesting to make all bonded devices (except for the master) turn off their LNB
power completely to avoid problems when receiving vertically polarized transponders
for adding support for "Satellite Channel Routing" (SCR) according to EN50607 ("JESS")
Thomas Maass <mase@setho.org>
for reporting a difference in the internal sequence of actions when pressing the Blue

58
HISTORY
View File

@ -8394,3 +8394,61 @@ Video Disk Recorder Revision History
do so again with this version to make sure the index is OK.
- Added the new command line option --updindex, which can be used to update an
incomplete index of a recording (based on a patch from Helmut Auer).
2015-01-20: Version 2.0.7
- Fixed a possible division by zero in frame rate detection.
- Fixed a bug in the Makefile when installing plugins with LCLBLD=1 (thanks to
Stefan Huelswitt).
- Fixed jumping to an absolute position via the Red key in case replay was paused
(reported by Dieter Ferdinand).
- Now returning from removing deleted recordings after at most 10 seconds, or if the
user presses a remote control key, to keep the system from getting unresponsive
when removing a huge number of files (reported by Dieter Ferdinand).
- Fixed generating the index file of an existing recording in case at the of a TS file
there is less data in the buffer than needed by the frame detector. In such a case
it was possible that frames were missed, and there was most likely a distortion
when replaying that part of a recording. This is mostly a problem for recordings that
consist of more than one *.ts file. Single file recordings could only lose some
frames at their very end, which probably doesn't matter. At any rate, if you have
generated an index file with VDR version 2.0.6 you may want to do so again with this
version to make sure the index is OK.
2015-02-01: Version 2.1.8
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- Fixed "warning: invalid suffix on literal" with GCC 4.8 and C++11 (thanks to Joerg
Bornkessel).
- Fixed the link to "svdrpsend (1)" in the vdr.1 man page (thanks to Chris Mayo).
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Updated the Romanian OSD texts (thanks to Lucian Muresan).
- Added functionality based on the "jumpplay" patch from Torsten Kunkel and Thomas
Günther:
+ The new option "Setup/Replay/Pause replay when jumping to a mark" can be used to
turn off pausing replay when jumping to an editing mark with the '9' key.
+ The new option "Setup/Replay/Skip edited parts" can be used to automatically skip
the edited parts of a recording during replay, without the need to actually cut
the recording.
+ The new option "Setup/Replay/Pause replay at last mark" can be used to make replay
go into Pause mode when it has reached the last "end" mark.
+ The '8' key for testing an edited sequence now also jumps to the next *end*
mark if "Setup/Replay/Skip edited parts" is active. This allows for testing edits
in recordings that have actually been cut, as well as recordings that have not
been cut, in case "Skip edited parts" is enabled.
- Added support for "Satellite Channel Routing" (SCR) according to EN50607, also
known as "JESS" (thanks to Manfred Völkel and Frank Neumann).
- The keys '1' and '3' can now be used in replay mode to position an editing mark
in "binary" mode (based on a patch from Rolf Ahrenberg, with modifications by Helmut
Auer). See MANUAL, section "Editing a Recording".
- The Yellow button in the "Setup/CAM" menu can now be used to put the selected
CAM into a mode where it remains assigned to a device that is tuned to the current
channel until the smart card it contains is activated and the CAM thus starts to
descramble (see MANUAL, section "Setup/CAM" for details).
- Updated the Estonian OSD texts (thanks to Arthur Konovalov).
- Added ARGSDIR to the ONEDIR section of Make.config.template (suggested by Derek
Kelly).
- Made cRecording::GetResume() public (suggested by Stefan Braun).
- Fixed setting the read index in cDvbPlayer::Goto() in case Still is false.
- The function cDvbPlayer::Goto() now automatically calls Play() if Still is false.
- Added support for LCN (Logical Channel Numbers), which plugins may use to sort
channels (thanks to Rolf Ahrenberg).

View File

@ -391,8 +391,9 @@ access your DiSEqC equipment (see man vdr(5) for details).
A special form of DiSEqC is used to connect several receivers to one signal
source using only a single cable. This method, known as "Satellite Channel Routing"
according to EN50494 (aka "Unicable(TM)", "OLT(TM)", "SatCR", "Single Cable
Distribution", "Channel Stacking System" or "Single Cable Interface") uses
the file "scr.conf" to specify which SCR channels use which user band frequency.
Distribution", "Channel Stacking System" or "Single Cable Interface") or
EN50607 (aka "JESS") uses the file "scr.conf" to specify which SCR channels
use which user band frequency.
If DVB-S devices need to be connected to the same satellite cable, but no
"Satellite Channel Routing" is available, they can be set to be "bonded" in

71
MANUAL
View File

@ -363,15 +363,29 @@ Version 2.0
- 0 Toggles an editing mark. If the mark indicator shows a red triangle,
the current mark is deleted. Otherwise a new mark is set at the
current position.
- 4, 6 Move an editing mark back and forward. You need to first jump to
an editing mark for this to work.
- 1, 3 Move an editing mark back and forward in "binary" mode. Pressing
either of these keys for the first time moves the mark 120 seconds
in the given direction (configurable via "Setup/Replay/Binary skip
initial value"). Further presses of the same key keep moving
the mark by the same value. Once the other key is pressed, the value
is divided by 2 (hence the name "binary") with every further press
of either key. Pressing '1' and '3' alternatingly divides the
distance all the way down to a single I-frame. That way a particular
place in a recording (for instance the beginning or end of a
commercial break) can be found very quickly. If none of these two
keys is pressed for a while (configurable via "Setup/Replay/Binary
skip timeout") the distance falls back to the initial value.
If replay is not in Pause mode, or if there is no mark at the
current position, the skip is performed without moving any mark.
- 4, 6 Move an editing mark back and forward by one I-frame. You need to
first jump to an editing mark for this to work.
- 7, 9 Jump back and forward between editing marks. Replay goes into still
mode after jumping to a mark. If the current position is at the
first or last mark, or if there are no marks at all, these keys
jump to the very beginning or end, respectively, of the recording.
- 8 Positions replay at a point 3 seconds before the current or next
"begin" mark and starts replay.
- 2 Start the actual cutting process.
- 2 Starts the actual cutting process.
Editing marks are represented by black, vertical lines in the progress display.
A small black triangle at the top of the mark means that this is a "begin"
@ -831,7 +845,19 @@ Version 2.0
if it is in the process of being reset, its current status
is displayed. The "Red" key can be pressed to enter the CAM
menu, and the "Green" key triggers a reset of the selected
slot. The "Ok" key also opens the CAM menu.
slot. The "Ok" key also opens the CAM menu. The "Yellow" key
assigns the selected CAM to a device and switches it to the
current channel. The CAM/device combination remains tuned to
the current channel until the smart card in the CAM has been
activated and thus starts to descramble, or until a recording
needs this device. Pressing the "Yellow" key while a CAM is
in activation mode cancels the activation. The activation mode
remains in effect even if you switch to a different channel
(provided there is more than one device in the system) or
watch a recording. To activate your smart card simply switch
to the channel you want to watch, open the "Setup/CAM" menu,
select the CAM that contains the smart card (in case you
have more than one CAM) and press the "Yellow" key.
Recording:
@ -943,6 +969,43 @@ Version 2.0
Defines whether the player automatically goes into Pause
mode when setting an editing mark.
Pause replay when jumping to a mark = yes
By default replay is automatically paused whenever you jump
to an editing mark with the '7' or '9' key in order to allow
you to easily adjust those marks. If this option is set to
'no', the '9' key will not pause if you are in Play mode and
the mark you jump to is not within 3 seconds of the end of
the recording.
Skip edited parts = no Defines whether the edited parts of a recording are
automatically skipped during replay. This includes jumping
to the first mark if replay starts at the beginning of the
recording, and stopping at the last mark.
In order to work, this option must be enabled before starting
replay.
Pause replay at last mark = no
If enabled, replay of a recording will go into Pause mode
when it has reached the last "end" mark (if any). Note that
the actual position at which the pause occurs may be a couple
of frames before the last "end" mark, depending on how much
data is buffered by your output device.
In order to work, this option must be enabled before starting
replay.
Binary skip initial value (s) = 120
Defines the number of seconds to jump from the current replay
position in either direction, when pressing the '1' or '3'
key for the first time after the "Binary skip timeout".
The valid range is 10...600.
Binary skip timeout (s) = 3
Defines the number of seconds after which pressing the
'1' or '3' key falls back to the "Binary skip initial value".
The valid range is 0...10. Setting the timeout to 0 disables
the binary mode and makes '1' and '3' always skip the number
of seconds configured as the initial value.
Resume ID = 0 Defines an additional ID that can be used in a multi user
environment, so that every user has his/her own resume
files for each recording. The valid range is 0...99, with

View File

@ -6,7 +6,7 @@
# See the main source file 'vdr.c' for copyright information and
# how to reach the author.
#
# $Id: Make.config.template 3.1 2014/04/14 11:43:53 kls Exp $
# $Id: Make.config.template 3.2 2015/01/30 15:18:47 kls Exp $
### The C compiler and options:
@ -58,6 +58,7 @@ ifdef ONEDIR
VIDEODIR = /video
CACHEDIR = $(VIDEODIR)
CONFDIR = $(VIDEODIR)
ARGSDIR = $(VIDEODIR)/conf.d
RESDIR = $(VIDEODIR)
endif

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: channels.c 3.7 2015/01/14 12:15:03 kls Exp $
* $Id: channels.c 3.8 2015/02/01 13:47:05 kls Exp $
*/
#include "channels.h"
@ -248,6 +248,15 @@ void cChannel::SetId(int Nid, int Tid, int Sid, int Rid)
}
}
void cChannel::SetLcn(int Lcn)
{
if (lcn != Lcn) {
if (Number())
dsyslog("changing lcn of channel %d (%s) from %d to %d\n", Number(), name, lcn, Lcn);
lcn = Lcn;
}
}
void cChannel::SetName(const char *Name, const char *ShortName, const char *Provider)
{
if (!isempty(Name)) {

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: channels.h 3.2 2014/01/04 15:01:21 kls Exp $
* $Id: channels.h 3.3 2015/02/01 13:30:26 kls Exp $
*/
#ifndef __CHANNELS_H
@ -121,6 +121,7 @@ private:
int tid;
int sid;
int rid;
int lcn; // Logical channel number assigned by data stream (or -1 if not available)
int number; // Sequence number assigned on load
bool groupSep;
int __EndData__;
@ -174,6 +175,7 @@ public:
int Tid(void) const { return tid; }
int Sid(void) const { return sid; }
int Rid(void) const { return rid; }
int Lcn(void) const { return lcn; }
int Number(void) const { return number; }
void SetNumber(int Number) { number = Number; }
bool GroupSep(void) const { return groupSep; }
@ -192,6 +194,7 @@ public:
void CopyTransponderData(const cChannel *Channel);
bool SetTransponderData(int Source, int Frequency, int Srate, const char *Parameters, bool Quiet = false);
void SetId(int Nid, int Tid, int Sid, int Rid = 0);
void SetLcn(int Lcn);
void SetName(const char *Name, const char *ShortName, const char *Provider);
void SetPortalName(const char *PortalName);
void SetPids(int Vpid, int Ppid, int Vtype, int *Apids, int *Atypes, char ALangs[][MAXLANGCODE2], int *Dpids, int *Dtypes, char DLangs[][MAXLANGCODE2], int *Spids, char SLangs[][MAXLANGCODE2], int Tpid);

90
ci.c
View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: ci.c 3.17 2015/01/15 09:14:57 kls Exp $
* $Id: ci.c 3.18 2015/01/30 12:24:53 kls Exp $
*/
#include "ci.h"
@ -22,6 +22,7 @@
#include "receiver.h"
#include "remux.h"
#include "libsi/si.h"
#include "skins.h"
#include "tools.h"
// Set these to 'true' for debug output:
@ -236,6 +237,53 @@ void cCaPidReceiver::Receive(uchar *Data, int Length)
}
}
// --- cCaActivationReceiver -------------------------------------------------
// A receiver that is used to make the device stay on a given channel and
// keep the CAM slot assigned.
#define UNSCRAMBLE_TIME 5 // seconds of receiving purely unscrambled data before considering the smart card "activated"
#define TS_PACKET_FACTOR 1024 // only process every TS_PACKET_FACTORth packet to keep the load down
class cCaActivationReceiver : public cReceiver {
private:
cCamSlot *camSlot;
time_t lastScrambledTime;
int numTsPackets;
protected:
virtual void Receive(uchar *Data, int Length);
public:
cCaActivationReceiver(const cChannel *Channel, cCamSlot *CamSlot);
virtual ~cCaActivationReceiver();
};
cCaActivationReceiver::cCaActivationReceiver(const cChannel *Channel, cCamSlot *CamSlot)
:cReceiver(Channel, MINPRIORITY + 1)
{
camSlot = CamSlot;
lastScrambledTime = time(NULL);
numTsPackets = 0;
}
cCaActivationReceiver::~cCaActivationReceiver()
{
Detach();
}
void cCaActivationReceiver::Receive(uchar *Data, int Length)
{
if (numTsPackets++ % TS_PACKET_FACTOR == 0) {
time_t Now = time(NULL);
if (TsIsScrambled(Data))
lastScrambledTime = Now;
else if (Now - lastScrambledTime > UNSCRAMBLE_TIME) {
dsyslog("CAM %d: activated!", camSlot->SlotNumber());
Skins.QueueMessage(mtInfo, tr("CAM activated!"));
Detach();
}
}
}
// --- cTPDU -----------------------------------------------------------------
#define MAX_TPDU_SIZE 2048
@ -1696,6 +1744,7 @@ cCamSlot::cCamSlot(cCiAdapter *CiAdapter, bool ReceiveCaPids)
ciAdapter = CiAdapter;
assignedDevice = NULL;
caPidReceiver = ReceiveCaPids ? new cCaPidReceiver : NULL;
caActivationReceiver = NULL;
slotIndex = -1;
lastModuleStatus = msReset; // avoids initial reset log message
resetTime = 0;
@ -1715,6 +1764,7 @@ cCamSlot::~cCamSlot()
if (assignedDevice)
assignedDevice->SetCamSlot(NULL);
delete caPidReceiver;
delete caActivationReceiver;
CamSlots.Del(this, false);
DeleteAllConnections();
}
@ -1735,8 +1785,10 @@ bool cCamSlot::Assign(cDevice *Device, bool Query)
Device->SetCamSlot(this);
dsyslog("CAM %d: assigned to device %d", slotNumber, Device->DeviceNumber() + 1);
}
else
else {
CancelActivation();
dsyslog("CAM %d: unassigned", slotNumber);
}
}
else
return false;
@ -1772,6 +1824,8 @@ void cCamSlot::DeleteAllConnections(void)
void cCamSlot::Process(cTPDU *TPDU)
{
cMutexLock MutexLock(&mutex);
if (caActivationReceiver && !caActivationReceiver->IsAttached())
CancelActivation();
if (TPDU) {
int n = TPDU->Tcid();
if (1 <= n && n <= MAX_CONNECTIONS_PER_CAM_SLOT) {
@ -1795,6 +1849,7 @@ void cCamSlot::Process(cTPDU *TPDU)
dbgprotocol("Slot %d: no module present\n", slotNumber);
isyslog("CAM %d: no module present", slotNumber);
DeleteAllConnections();
CancelActivation();
break;
case msReset:
dbgprotocol("Slot %d: module reset\n", slotNumber);
@ -1856,6 +1911,37 @@ bool cCamSlot::Reset(void)
return false;
}
bool cCamSlot::CanActivate(void)
{
return ModuleStatus() == msReady;
}
void cCamSlot::StartActivation(void)
{
cMutexLock MutexLock(&mutex);
if (!caActivationReceiver) {
if (cDevice *d = Device()) {
if (cChannel *Channel = Channels.GetByNumber(cDevice::CurrentChannel())) {
caActivationReceiver = new cCaActivationReceiver(Channel, this);
d->AttachReceiver(caActivationReceiver);
dsyslog("CAM %d: activating on device %d with channel %d (%s)", SlotNumber(), d->DeviceNumber() + 1, Channel->Number(), Channel->Name());
}
}
}
}
void cCamSlot::CancelActivation(void)
{
cMutexLock MutexLock(&mutex);
delete caActivationReceiver;
caActivationReceiver = NULL;
}
bool cCamSlot::IsActivating(void)
{
return caActivationReceiver;
}
eModuleStatus cCamSlot::ModuleStatus(void)
{
cMutexLock MutexLock(&mutex);

23
ci.h
View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: ci.h 3.9 2015/01/15 09:18:09 kls Exp $
* $Id: ci.h 3.11 2015/01/31 14:36:41 kls Exp $
*/
#ifndef __CI_H
@ -123,6 +123,7 @@ class cCiTransportConnection;
class cCiSession;
class cCiCaProgramData;
class cCaPidReceiver;
class cCaActivationReceiver;
class cCamSlot : public cListObject {
friend class cCiAdapter;
@ -133,6 +134,7 @@ private:
cCiAdapter *ciAdapter;
cDevice *assignedDevice;
cCaPidReceiver *caPidReceiver;
cCaActivationReceiver *caActivationReceiver;
int slotIndex;
int slotNumber;
cCiTransportConnection *tc[MAX_CONNECTIONS_PER_CAM_SLOT + 1]; // connection numbering starts with 1
@ -182,6 +184,23 @@ public:
virtual bool Reset(void);
///< Resets the CAM in this slot.
///< Returns true if the operation was successful.
virtual bool CanActivate(void);
///< Returns true if there is a CAM in this slot that can be put into
///< activation mode.
virtual void StartActivation(void);
///< Puts the CAM in this slot into a mode where an inserted smart card
///< can be activated. The default action is to make IsActivating() return
///< true, which causes the device this CAM slot is attached to to never
///< automatically detach any receivers with negative priority if the
///< PIDs they want to receive are not decrypted by the CAM.
///< StartActivation() must be called *after* the CAM slot has been assigned
///< to a device. The CAM slot will stay in activation mode until the CAM
///< begins to decrypt, a call to CancelActivation() is made, or the device
///< is needed for a recording.
virtual void CancelActivation(void);
///< Cancels a previously started activation (if any).
virtual bool IsActivating(void);
///< Returns true if this CAM slot is currently activating a smart card.
virtual eModuleStatus ModuleStatus(void);
///< Returns the status of the CAM in this slot.
virtual const char *GetCamName(void);
@ -201,7 +220,7 @@ public:
virtual cCiEnquiry *GetEnquiry(void);
///< Gets a pending enquiry, or NULL if there is no enquiry.
int Priority(void);
///< Returns the priority if the device this slot is currently assigned
///< Returns the priority of the device this slot is currently assigned
///< to, or IDLEPRIORITY if it is not assigned to any device.
virtual bool ProvidesCa(const int *CaSystemIds);
///< Returns true if the CAM in this slot provides one of the given

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: config.c 3.3 2015/01/12 14:32:17 kls Exp $
* $Id: config.c 3.6 2015/01/29 09:01:30 kls Exp $
*/
#include "config.h"
@ -470,6 +470,11 @@ cSetup::cSetup(void)
ShowRemainingTime = 0;
ProgressDisplayTime = 0;
PauseOnMarkSet = 0;
PauseOnMarkJump = 1;
SkipEdited = 0;
PauseAtLastMark = 0;
BinarySkipInitial = 120;
BinarySkipTimeout = 3;
ResumeID = 0;
CurrentChannel = -1;
CurrentVolume = MAXVOLUME;
@ -683,6 +688,11 @@ bool cSetup::Parse(const char *Name, const char *Value)
else if (!strcasecmp(Name, "ShowRemainingTime")) ShowRemainingTime = atoi(Value);
else if (!strcasecmp(Name, "ProgressDisplayTime")) ProgressDisplayTime= atoi(Value);
else if (!strcasecmp(Name, "PauseOnMarkSet")) PauseOnMarkSet = atoi(Value);
else if (!strcasecmp(Name, "PauseOnMarkJump")) PauseOnMarkJump = atoi(Value);
else if (!strcasecmp(Name, "SkipEdited")) SkipEdited = atoi(Value);
else if (!strcasecmp(Name, "PauseAtLastMark")) PauseAtLastMark = atoi(Value);
else if (!strcasecmp(Name, "BinarySkipInitial")) BinarySkipInitial = atoi(Value);
else if (!strcasecmp(Name, "BinarySkipTimeout")) BinarySkipTimeout = atoi(Value);
else if (!strcasecmp(Name, "ResumeID")) ResumeID = atoi(Value);
else if (!strcasecmp(Name, "CurrentChannel")) CurrentChannel = atoi(Value);
else if (!strcasecmp(Name, "CurrentVolume")) CurrentVolume = atoi(Value);
@ -800,6 +810,11 @@ bool cSetup::Save(void)
Store("ShowRemainingTime", ShowRemainingTime);
Store("ProgressDisplayTime",ProgressDisplayTime);
Store("PauseOnMarkSet", PauseOnMarkSet);
Store("PauseOnMarkJump", PauseOnMarkJump);
Store("SkipEdited", SkipEdited);
Store("PauseAtLastMark", PauseAtLastMark);
Store("BinarySkipInitial", BinarySkipInitial);
Store("BinarySkipTimeout", BinarySkipTimeout);
Store("ResumeID", ResumeID);
Store("CurrentChannel", CurrentChannel);
Store("CurrentVolume", CurrentVolume);

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: config.h 3.10 2015/01/12 14:32:17 kls Exp $
* $Id: config.h 3.13 2015/01/27 10:50:11 kls Exp $
*/
#ifndef __CONFIG_H
@ -22,13 +22,13 @@
// VDR's own version number:
#define VDRVERSION "2.1.7"
#define VDRVERSNUM 20107 // Version * 10000 + Major * 100 + Minor
#define VDRVERSION "2.1.8"
#define VDRVERSNUM 20108 // Version * 10000 + Major * 100 + Minor
// The plugin API's version number:
#define APIVERSION "2.1.7"
#define APIVERSNUM 20107 // Version * 10000 + Major * 100 + Minor
#define APIVERSION "2.1.8"
#define APIVERSNUM 20108 // 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
@ -333,6 +333,11 @@ public:
int ShowRemainingTime;
int ProgressDisplayTime;
int PauseOnMarkSet;
int PauseOnMarkJump;
int SkipEdited;
int PauseAtLastMark;
int BinarySkipInitial;
int BinarySkipTimeout;
int ResumeID;
int CurrentChannel;
int CurrentVolume;

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: device.c 3.19 2015/01/14 12:02:44 kls Exp $
* $Id: device.c 3.20 2015/01/30 12:11:30 kls Exp $
*/
#include "device.h"
@ -756,7 +756,7 @@ eSetChannelResult cDevice::SetChannel(const cChannel *Channel, bool LiveView)
cDevice *Device = (LiveView && IsPrimaryDevice()) ? GetDevice(Channel, LIVEPRIORITY, true) : this;
bool NeedsTransferMode = Device != this;
bool NeedsTransferMode = LiveView && Device != PrimaryDevice();
// If the CAM slot wants the TS data, we need to switch to Transfer Mode:
if (!NeedsTransferMode && LiveView && IsPrimaryDevice() && CamSlot() && CamSlot()->WantsTsData())
NeedsTransferMode = true;
@ -767,7 +767,7 @@ eSetChannelResult cDevice::SetChannel(const cChannel *Channel, bool LiveView)
// use the card that actually can receive it and transfer data from there:
if (NeedsTransferMode) {
if (Device && CanReplay()) {
if (Device && PrimaryDevice()->CanReplay()) {
if (Device->SetChannel(Channel, false) == scrOk) // calling SetChannel() directly, not SwitchChannel()!
cControl::Launch(new cTransferControl(Device, Channel));
else
@ -1585,13 +1585,13 @@ void cDevice::Action(void)
bool DetachReceivers = false;
bool DescramblingOk = false;
int CamSlotNumber = 0;
cCamSlot *cs = NULL;
if (startScrambleDetection) {
cCamSlot *cs = CamSlot();
cs = CamSlot();
CamSlotNumber = cs ? cs->SlotNumber() : 0;
if (CamSlotNumber) {
bool Scrambled = b[3] & TS_SCRAMBLING_CONTROL;
int t = time(NULL) - startScrambleDetection;
if (Scrambled) {
if (TsIsScrambled(b)) {
if (t > TS_SCRAMBLING_TIMEOUT)
DetachReceivers = true;
}
@ -1605,7 +1605,7 @@ void cDevice::Action(void)
Lock();
for (int i = 0; i < MAXRECEIVERS; i++) {
if (receiver[i] && receiver[i]->WantsPid(Pid)) {
if (DetachReceivers) {
if (DetachReceivers && cs && (!cs->IsActivating() || receiver[i]->Priority() >= LIVEPRIORITY)) {
dsyslog("detaching receiver - won't decrypt channel %s with CAM %d", *receiver[i]->ChannelID().ToString(), CamSlotNumber);
ChannelCamRelations.SetChecked(receiver[i]->ChannelID(), CamSlotNumber);
Detach(receiver[i]);
@ -1704,7 +1704,7 @@ void cDevice::Detach(cReceiver *Receiver)
if (camSlot) {
if (Receiver->priority > MINPRIORITY) { // priority check to avoid an infinite loop with the CAM slot's caPidReceiver
camSlot->StartDecrypting();
if (!camSlot->IsDecrypting())
if (!camSlot->IsDecrypting() && !camSlot->IsActivating())
camSlot->Assign(NULL);
}
}

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: diseqc.c 3.3 2013/12/28 11:33:08 kls Exp $
* $Id: diseqc.c 3.4 2015/01/26 12:02:14 kls Exp $
*/
#include "diseqc.h"
@ -164,7 +164,7 @@ bool cScr::Parse(const char *s)
bool result = false;
int fields = sscanf(s, "%d %u %d", &channel, &userBand, &pin);
if (fields == 2 || fields == 3) {
if (channel >= 0 && channel < 8) {
if (channel >= 0 && channel < 32) {
result = true;
if (fields == 3 && (pin < 0 || pin > 255)) {
esyslog("Error: invalid SCR pin '%d'", pin);
@ -255,26 +255,52 @@ bool cDiseqc::Parse(const char *s)
uint cDiseqc::SetScrFrequency(uint SatFrequency, const cScr *Scr, uint8_t *Codes) const
{
uint t = SatFrequency == 0 ? 0 : (SatFrequency + Scr->UserBand() + 2) / 4 - 350; // '+ 2' together with '/ 4' results in rounding!
if (t < 1024 && Scr->Channel() >= 0 && Scr->Channel() < 8) {
Codes[3] = t >> 8 | (t == 0 ? 0 : scrBank << 2) | Scr->Channel() << 5;
Codes[4] = t;
if (t)
return (t + 350) * 4 - SatFrequency;
if ((Codes[0] & 0xF0) == 0x70 ) { // EN50607 aka JESS
uint t = SatFrequency == 0 ? 0 : (SatFrequency - 100);
if (t < 2048 && Scr->Channel() >= 0 && Scr->Channel() < 32) {
Codes[1] = t >> 8 | Scr->Channel() << 3;
Codes[2] = t;
Codes[3] = (t == 0 ? 0 : scrBank);
if (t)
return Scr->UserBand();
}
}
else { // EN50494 aka Unicable
uint t = SatFrequency == 0 ? 0 : (SatFrequency + Scr->UserBand() + 2) / 4 - 350; // '+ 2' together with '/ 4' results in rounding!
if (t < 1024 && Scr->Channel() >= 0 && Scr->Channel() < 8) {
Codes[3] = t >> 8 | (t == 0 ? 0 : scrBank << 2) | Scr->Channel() << 5;
Codes[4] = t;
if (t)
return (t + 350) * 4 - SatFrequency;
}
}
esyslog("ERROR: invalid SCR channel number %d or frequency %d", Scr->Channel(),SatFrequency);
return 0;
}
int cDiseqc::SetScrPin(const cScr *Scr, uint8_t *Codes) const
{
if (Scr->Pin() >= 0 && Scr->Pin() <= 255) {
Codes[2] = 0x5C;
Codes[5] = Scr->Pin();
return 6;
if ((Codes[0] & 0xF0) == 0x70 ) { // EN50607 aka JESS
if (Scr->Pin() >= 0 && Scr->Pin() <= 255) {
Codes[0] = 0x71;
Codes[4] = Scr->Pin();
return 5;
}
else {
Codes[0] = 0x70;
return 4;
}
}
else {
Codes[2] = 0x5A;
return 5;
else { // EN50494 aka Unicable
if (Scr->Pin() >= 0 && Scr->Pin() <= 255) {
Codes[2] = 0x5C;
Codes[5] = Scr->Pin();
return 6;
}
else {
Codes[2] = 0x5A;
return 5;
}
}
}
@ -319,7 +345,7 @@ const char *cDiseqc::GetScrBank(const char *s) const
char *p = NULL;
errno = 0;
int n = strtol(s, &p, 10);
if (!errno && p != s && n >= 0 && n < 8) {
if (!errno && p != s && n >= 0 && n < 256) {
if (parsing) {
if (scrBank < 0)
scrBank = n;

View File

@ -82,7 +82,7 @@ S13.0E 99999 H 10600 t V W15 [E0 10 38 F7] W15 B W15 T
# S19.2E 12110 V 11080 t v
# S19.2E 99999 V 10720 t v
#
# SCR (Satellite Channel Routing):
# SCR (Satellite Channel Routing) EN50494:
#
# S19.2E 11700 V 9750 t V W10 S0 [E0 10 5A 00 00] W10 v
# S19.2E 99999 V 10600 t V W10 S1 [E0 10 5A 00 00] W10 v
@ -94,6 +94,28 @@ S13.0E 99999 H 10600 t V W15 [E0 10 38 F7] W15 B W15 T
# S13.0E 11700 H 9750 t V W10 S6 [E0 10 5A 00 00] W10 v
# S13.0E 99999 H 10600 t V W10 S7 [E0 10 5A 00 00] W10 v
#
# SCR (Satellite Channel Routing) EN50607 "JESS":
#
# S19.2E 11700 V 9750 t V W10 S0 [70 00 00 00] W10 v
# S19.2E 99999 V 10600 t V W10 S1 [70 00 00 00] W10 v
# S19.2E 11700 H 9750 t V W10 S2 [70 00 00 00] W10 v
# S19.2E 99999 H 10600 t V W10 S3 [70 00 00 00] W10 v
#
# S13.0E 11700 V 9750 t V W10 S4 [70 00 00 00] W10 v
# S13.0E 99999 V 10600 t V W10 S5 [70 00 00 00] W10 v
# S13.0E 11700 H 9750 t V W10 S6 [70 00 00 00] W10 v
# S13.0E 99999 H 10600 t V W10 S7 [70 00 00 00] W10 v
#
# S23.0E 11700 V 9750 t V W10 S8 [70 00 00 00] W10 v
# S23.0E 99999 V 10600 t V W10 S9 [70 00 00 00] W10 v
# S23.0E 11700 H 9750 t V W10 S10 [70 00 00 00] W10 v
# S23.0E 99999 H 10600 t V W10 S11 [70 00 00 00] W10 v
#
# S28.2E 11700 V 9750 t V W10 S12 [70 00 00 00] W10 v
# S28.2E 99999 V 10600 t V W10 S13 [70 00 00 00] W10 v
# S28.2E 11700 H 9750 t V W10 S14 [70 00 00 00] W10 v
# S28.2E 99999 H 10600 t V W10 S15 [70 00 00 00] W10 v
#
# Positioner for steerable dish:
#
# S360E 11700 V 9750 t V W20 P W20 t v

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: dvbplayer.c 3.1 2013/12/25 13:24:07 kls Exp $
* $Id: dvbplayer.c 3.3 2015/02/01 10:45:41 kls Exp $
*/
#include "dvbplayer.h"
@ -211,6 +211,7 @@ private:
cNonBlockingFileReader *nonBlockingFileReader;
cRingBufferFrame *ringBuffer;
cPtsIndex ptsIndex;
cMarks marks;
cFileName *fileName;
cIndexFile *index;
cUnbufferedFile *replayFile;
@ -296,6 +297,8 @@ cDvbPlayer::cDvbPlayer(const char *FileName, bool PauseLive)
}
else if (PauseLive)
framesPerSecond = cRecording(FileName).FramesPerSecond(); // the fps rate might have changed from the default
if (Setup.SkipEdited || Setup.PauseAtLastMark)
marks.Load(FileName, framesPerSecond, isPesRecording);
}
cDvbPlayer::~cDvbPlayer()
@ -402,8 +405,19 @@ void cDvbPlayer::Action(void)
int pc = 0;
readIndex = Resume();
if (readIndex >= 0)
if (readIndex > 0)
isyslog("resuming replay at index %d (%s)", readIndex, *IndexToHMSF(readIndex, true, framesPerSecond));
else if (Setup.SkipEdited) {
if (marks.First() && index) {
int Index = marks.First()->Position();
uint16_t FileNumber;
off_t FileOffset;
if (index->Get(Index, &FileNumber, &FileOffset) && NextFile(FileNumber, FileOffset)) {
isyslog("starting replay at first mark %d (%s)", Index, *IndexToHMSF(Index, true, framesPerSecond));
readIndex = Index;
}
}
}
nonBlockingFileReader = new cNonBlockingFileReader;
int Length = 0;
@ -413,6 +427,8 @@ void cDvbPlayer::Action(void)
uint32_t LastStc = 0;
int LastReadIFrame = -1;
int SwitchToPlayFrame = 0;
bool CutIn = false;
bool AtLastMark = false;
if (pauseLive)
Goto(0, true);
@ -431,7 +447,7 @@ void cDvbPlayer::Action(void)
// Read the next frame from the file:
if (playMode != pmStill && playMode != pmPause) {
if (playMode != pmStill && playMode != pmPause && !AtLastMark) {
if (!readFrame && (replayFile || readIndex >= 0)) {
if (!nonBlockingFileReader->Reading()) {
if (!SwitchToPlayFrame && (playMode == pmFast || (playMode == pmSlow && playDir == pdBackward))) {
@ -468,8 +484,30 @@ void cDvbPlayer::Action(void)
else if (index) {
uint16_t FileNumber;
off_t FileOffset;
if (index->Get(readIndex + 1, &FileNumber, &FileOffset, &readIndependent, &Length) && NextFile(FileNumber, FileOffset))
if (index->Get(readIndex + 1, &FileNumber, &FileOffset, &readIndependent, &Length) && NextFile(FileNumber, FileOffset)) {
readIndex++;
if (Setup.SkipEdited || Setup.PauseAtLastMark) {
marks.Update();
cMark *m = marks.Get(readIndex);
if (m && (m->Index() & 0x01) != 0) { // we're at an end mark
m = marks.GetNextBegin(m);
int Index = -1;
if (m)
Index = m->Position(); // skip to next begin mark
else if (Setup.PauseAtLastMark)
AtLastMark = true; // triggers going into Pause mode
else if (index->IsStillRecording())
Index = index->GetNextIFrame(index->Last() - int(round(MAXSTUCKATEOF * framesPerSecond)), false); // skip, but stay off end of live-recordings
else
AtLastMark = true; // triggers stopping replay
if (Setup.SkipEdited && Index > readIndex) {
isyslog("skipping from %d (%s) to %d (%s)", readIndex - 1, *IndexToHMSF(readIndex - 1, true, framesPerSecond), Index, *IndexToHMSF(Index, true, framesPerSecond));
readIndex = Index;
CutIn = true;
}
}
}
}
else
eof = true;
}
@ -512,6 +550,11 @@ void cDvbPlayer::Action(void)
// Store the frame in the buffer:
if (readFrame) {
if (CutIn) {
if (isPesRecording)
cRemux::SetBrokenLink(readFrame->Data(), readFrame->Count());
CutIn = false;
}
if (ringBuffer->Put(readFrame))
readFrame = NULL;
else
@ -578,8 +621,17 @@ void cDvbPlayer::Action(void)
p = NULL;
}
}
else
else {
if (AtLastMark) {
if (Setup.PauseAtLastMark) {
playMode = pmPause;
AtLastMark = false;
}
else
eof = true;
}
Sleep = true;
}
// Handle hitting begin/end of recording:
@ -800,18 +852,26 @@ void cDvbPlayer::Goto(int Index, bool Still)
off_t FileOffset;
int Length;
Index = index->GetNextIFrame(Index, false, &FileNumber, &FileOffset, &Length);
if (Index >= 0 && NextFile(FileNumber, FileOffset) && Still) {
uchar b[MAXFRAMESIZE];
int r = ReadFrame(replayFile, b, Length, sizeof(b));
if (r > 0) {
if (playMode == pmPause)
DevicePlay();
DeviceStillPicture(b, r);
ptsIndex.Put(isPesRecording ? PesGetPts(b) : TsGetPts(b, r), Index);
if (Index >= 0) {
if (Still) {
if (NextFile(FileNumber, FileOffset)) {
uchar b[MAXFRAMESIZE];
int r = ReadFrame(replayFile, b, Length, sizeof(b));
if (r > 0) {
if (playMode == pmPause)
DevicePlay();
DeviceStillPicture(b, r);
ptsIndex.Put(isPesRecording ? PesGetPts(b) : TsGetPts(b, r), Index);
}
playMode = pmStill;
readIndex = Index;
}
}
else {
readIndex = Index - 1; // Action() will first increment it!
Play();
}
playMode = pmStill;
}
readIndex = Index;
}
}

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: dvbplayer.h 3.0 2012/02/19 11:40:36 kls Exp $
* $Id: dvbplayer.h 3.1 2015/02/01 11:20:54 kls Exp $
*/
#ifndef __DVBPLAYER_H
@ -56,7 +56,7 @@ public:
// and >0 if this is multi speed mode.
void Goto(int Index, bool Still = false);
// Positions to the given index and displays that frame as a still picture
// if Still is true.
// if Still is true. If Still is false, Play() will be called.
};
#endif //__DVBPLAYER_H

View File

@ -7,7 +7,7 @@
* Original author: Marco Schluessler <marco@lordzodiac.de>
* With some input from the "subtitles plugin" by Pekka Virtanen <pekka.virtanen@sci.fi>
*
* $Id: dvbsubtitle.c 3.9 2015/01/14 11:31:09 kls Exp $
* $Id: dvbsubtitle.c 3.10 2015/01/20 14:53:57 kls Exp $
*/
#include "dvbsubtitle.h"
@ -1042,7 +1042,7 @@ void cDvbSubtitlePage::Parse(int64_t Pts, cBitStream &bs)
default: dbgpages("unknown page state: %d<br>\n", pageState);
}
bs.SkipBits(2); // reserved
dbgpages("<hr>\n<b>page</b> id %d version %d pts %"PRId64" timeout %d state %d<br>\n", pageId, pageVersionNumber, pts, pageTimeout, pageState);
dbgpages("<hr>\n<b>page</b> id %d version %d pts %" PRId64 " timeout %d state %d<br>\n", pageId, pageVersionNumber, pts, pageTimeout, pageState);
regionRefs.Clear();
while (!bs.IsEOF())
regionRefs.Add(new cSubtitleRegionRef(bs));
@ -1073,7 +1073,7 @@ void cDvbSubtitlePage::ParsePgs(int64_t Pts, cBitStream &bs)
default: dbgpages("unknown page state: %d<br>\n", pageState);
}
bs.SkipBits(6);
dbgpages("<hr>\n<b>page</b> id %d version %d pts %"PRId64" timeout %d state %d<br>\n", pageId, pageVersionNumber, pts, pageTimeout, pageState);
dbgpages("<hr>\n<b>page</b> id %d version %d pts %" PRId64 " timeout %d state %d<br>\n", pageId, pageVersionNumber, pts, pageTimeout, pageState);
regionRefs.Clear();
pending = true;
}
@ -1384,7 +1384,7 @@ int cDvbSubtitleConverter::ConvertFragments(const uchar *Data, int Length)
if (Length > PayloadOffset + SubstreamHeaderLength) {
int64_t pts = PesHasPts(Data) ? PesGetPts(Data) : -1;
if (pts >= 0)
dbgconverter("converter PTS: %"PRId64"<br>\n", pts);
dbgconverter("converter PTS: %" PRId64 "<br>\n", pts);
const uchar *data = Data + PayloadOffset + SubstreamHeaderLength; // skip substream header
int length = Length - PayloadOffset - SubstreamHeaderLength; // skip substream header
if (ResetSubtitleAssembler)
@ -1420,7 +1420,7 @@ int cDvbSubtitleConverter::Convert(const uchar *Data, int Length)
if (Length > PayloadOffset) {
int64_t pts = PesHasPts(Data) ? PesGetPts(Data) : -1;
if (pts >= 0)
dbgconverter("converter PTS: %"PRId64"<br>\n", pts);
dbgconverter("converter PTS: %" PRId64 "<br>\n", pts);
const uchar *data = Data + PayloadOffset;
int length = Length - PayloadOffset;
if (length > 0) {
@ -1488,7 +1488,7 @@ void cDvbSubtitleConverter::Action(void)
dbgoutput("showing bitmap #%d of %d<br>\n", sb->Index() + 1, bitmaps->Count());
sb->Draw(osd);
Timeout.Set(sb->Timeout() * 1000);
dbgconverter("PTS: %"PRId64" STC: %"PRId64" (%"PRId64") timeout: %d<br>\n", sb->Pts(), STC, Delta, sb->Timeout());
dbgconverter("PTS: %" PRId64 " STC: %" PRId64 " (%" PRId64 ") timeout: %d<br>\n", sb->Pts(), STC, Delta, sb->Timeout());
}
}
else

4
keys.h
View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: keys.h 3.0 2012/12/04 12:51:25 kls Exp $
* $Id: keys.h 3.1 2015/01/27 10:45:18 kls Exp $
*/
#ifndef __KEYS_H
@ -65,6 +65,8 @@ enum eKeys { // "Up" and "Down" must be the first two keys!
// This is in preparation for having more key codes:
#define kMarkToggle k0
#define kMarkSkipBack k1
#define kMarkSkipForward k3
#define kMarkMoveBack k4
#define kMarkMoveForward k6
#define kMarkJumpBack k7

158
menu.c
View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: menu.c 3.28 2015/01/15 11:14:21 kls Exp $
* $Id: menu.c 3.35 2015/02/01 10:42:11 kls Exp $
*/
#include "menu.h"
@ -3419,7 +3419,7 @@ cMenuSetupCAMItem::cMenuSetupCAMItem(cCamSlot *CamSlot)
bool cMenuSetupCAMItem::Changed(void)
{
char buffer[32];
const char *Activating = "";
const char *CamName = camSlot->GetCamName();
if (!CamName) {
switch (camSlot->ModuleStatus()) {
@ -3429,7 +3429,10 @@ bool cMenuSetupCAMItem::Changed(void)
default: CamName = "-"; break;
}
}
snprintf(buffer, sizeof(buffer), " %d %s", camSlot->SlotNumber(), CamName);
else if (camSlot->IsActivating())
// TRANSLATORS: note the leading blank!
Activating = tr(" (activating)");
cString buffer = cString::sprintf(" %d %s%s", camSlot->SlotNumber(), CamName, Activating);
if (strcmp(buffer, Text()) != 0) {
SetText(buffer);
return true;
@ -3439,8 +3442,11 @@ bool cMenuSetupCAMItem::Changed(void)
class cMenuSetupCAM : public cMenuSetupBase {
private:
const char *activationHelp;
eOSState Menu(void);
eOSState Reset(void);
eOSState Activate(void);
void SetHelpKeys(void);
public:
cMenuSetupCAM(void);
virtual eOSState ProcessKey(eKeys Key);
@ -3448,13 +3454,33 @@ public:
cMenuSetupCAM::cMenuSetupCAM(void)
{
activationHelp = NULL;
SetMenuCategory(mcSetupCam);
SetSection(tr("CAM"));
SetCols(15);
SetHasHotkeys();
for (cCamSlot *CamSlot = CamSlots.First(); CamSlot; CamSlot = CamSlots.Next(CamSlot))
Add(new cMenuSetupCAMItem(CamSlot));
SetHelp(tr("Button$Menu"), tr("Button$Reset"));
SetHelpKeys();
}
void cMenuSetupCAM::SetHelpKeys(void)
{
if (HasSubMenu())
return;
cMenuSetupCAMItem *item = (cMenuSetupCAMItem *)Get(Current());
const char *NewActivationHelp = "";
if (item) {
cCamSlot *CamSlot = item->CamSlot();
if (CamSlot->IsActivating())
NewActivationHelp = tr("Button$Cancel activation");
else if (CamSlot->CanActivate())
NewActivationHelp = tr("Button$Activate");
}
if (NewActivationHelp != activationHelp) {
activationHelp = NewActivationHelp;
SetHelp(tr("Button$Menu"), tr("Button$Reset"), activationHelp);
}
}
eOSState cMenuSetupCAM::Menu(void)
@ -3484,6 +3510,43 @@ eOSState cMenuSetupCAM::Menu(void)
return osContinue;
}
eOSState cMenuSetupCAM::Activate(void)
{
cMenuSetupCAMItem *item = (cMenuSetupCAMItem *)Get(Current());
if (item) {
cCamSlot *CamSlot = item->CamSlot();
if (CamSlot->IsActivating())
CamSlot->CancelActivation();
else if (CamSlot->CanActivate()) {
if (CamSlot->Priority() < LIVEPRIORITY) { // don't interrupt recordings
if (cChannel *Channel = Channels.GetByNumber(cDevice::CurrentChannel())) {
for (int i = 0; i < cDevice::NumDevices(); i++) {
if (cDevice *Device = cDevice::GetDevice(i)) {
if (Device->ProvidesChannel(Channel)) {
if (Device->Priority() < LIVEPRIORITY) { // don't interrupt recordings
if (CamSlot->CanActivate()) {
if (CamSlot->Assign(Device, true)) { // query
cControl::Shutdown(); // must end transfer mode before assigning CAM, otherwise it might be unassigned again
if (CamSlot->Assign(Device)) {
if (Device->SwitchChannel(Channel, true)) {
CamSlot->StartActivation();
return osContinue;
}
}
}
}
}
}
}
}
}
}
Skins.Message(mtError, tr("Can't activate CAM!"));
}
}
return osContinue;
}
eOSState cMenuSetupCAM::Reset(void)
{
cMenuSetupCAMItem *item = (cMenuSetupCAMItem *)Get(Current());
@ -3505,12 +3568,14 @@ eOSState cMenuSetupCAM::ProcessKey(eKeys Key)
case kOk:
case kRed: return Menu();
case kGreen: state = Reset(); break;
case kYellow: state = Activate(); break;
default: break;
}
for (cMenuSetupCAMItem *ci = (cMenuSetupCAMItem *)First(); ci; ci = (cMenuSetupCAMItem *)ci->Next()) {
if (ci->Changed())
DisplayItem(ci);
}
SetHelpKeys();
}
return state;
}
@ -3571,6 +3636,11 @@ cMenuSetupReplay::cMenuSetupReplay(void)
Add(new cMenuEditBoolItem(tr("Setup.Replay$Show remaining time"), &data.ShowRemainingTime));
Add(new cMenuEditIntItem( tr("Setup.Replay$Progress display time (s)"), &data.ProgressDisplayTime, 0, 60));
Add(new cMenuEditBoolItem(tr("Setup.Replay$Pause replay when setting mark"), &data.PauseOnMarkSet));
Add(new cMenuEditBoolItem(tr("Setup.Replay$Pause replay when jumping to a mark"), &data.PauseOnMarkJump));
Add(new cMenuEditBoolItem(tr("Setup.Replay$Skip edited parts"), &data.SkipEdited));
Add(new cMenuEditBoolItem(tr("Setup.Replay$Pause replay at last mark"), &data.PauseAtLastMark));
Add(new cMenuEditIntItem( tr("Setup.Replay$Binary skip initial value (s)"), &data.BinarySkipInitial, 10, 600));
Add(new cMenuEditIntItem( tr("Setup.Replay$Binary skip timeout (s)"), &data.BinarySkipTimeout, 0, 10));
Add(new cMenuEditIntItem(tr("Setup.Replay$Resume ID"), &data.ResumeID, 0, 99));
}
@ -4910,6 +4980,39 @@ bool cRecordControls::StateChanged(int &State)
return Result;
}
// --- cBinarySkipper --------------------------------------------------------
cBinarySkipper::cBinarySkipper(void)
{
initialValue = NULL;
currentValue = 0;
framesPerSecond = 0;
lastKey = kNone;
}
void cBinarySkipper::Initialize(int *InitialValue, double FramesPerSecond)
{
initialValue = InitialValue;
framesPerSecond = FramesPerSecond;
currentValue = 0;
}
int cBinarySkipper::GetValue(eKeys Key)
{
if (!initialValue)
return 0;
if (timeout.TimedOut()) {
currentValue = int(round(*initialValue * framesPerSecond));
lastKey = Key;
}
else if (Key != lastKey) {
currentValue /= 2;
lastKey = kNone; // once the direction has changed, every further call halves the value
}
timeout.Set(Setup.BinarySkipTimeout * 1000);
return max(currentValue, 1);
}
// --- cReplayControl --------------------------------------------------------
cReplayControl *cReplayControl::currentReplayControl = NULL;
@ -4931,6 +5034,7 @@ cReplayControl::cReplayControl(bool PauseLive)
cRecording Recording(fileName);
cStatus::MsgReplaying(this, Recording.Name(), Recording.FileName(), true);
marks.Load(fileName, Recording.FramesPerSecond(), Recording.IsPesRecording());
binarySkipper.Initialize(&Setup.BinarySkipInitial, Recording.FramesPerSecond());
SetTrackDescriptions(false);
if (Setup.ProgressDisplayTime)
ShowTimed(Setup.ProgressDisplayTime);
@ -5158,8 +5262,6 @@ void cReplayControl::TimeSearchProcess(eKeys Key)
Seconds = min(Total - STAY_SECONDS_OFF_END, Seconds);
bool Still = Key == kDown || Key == kPause || Key == kOk;
Goto(SecondsToFrames(Seconds, FramesPerSecond()), Still);
if (!Still)
Play();
}
timeSearchActive = false;
break;
@ -5223,6 +5325,14 @@ void cReplayControl::MarkJump(bool Forward)
if (GetIndex(Current, Total)) {
if (marks.Count()) {
if (cMark *m = Forward ? marks.GetNext(Current) : marks.GetPrev(Current)) {
if (!Setup.PauseOnMarkJump) {
bool Playing, Fwd;
int Speed;
if (GetReplayMode(Playing, Fwd, Speed) && Playing && Forward && m->Position() < Total - SecondsToFrames(3, FramesPerSecond())) {
Goto(m->Position());
return;
}
}
Goto(m->Position(), true);
displayFrames = true;
return;
@ -5234,26 +5344,40 @@ void cReplayControl::MarkJump(bool Forward)
}
}
void cReplayControl::MarkMove(bool Forward)
void cReplayControl::MarkMove(int Frames, bool MarkRequired)
{
int Current, Total;
if (GetIndex(Current, Total)) {
if (cMark *m = marks.Get(Current)) {
bool Play, Forward;
int Speed;
GetReplayMode(Play, Forward, Speed);
cMark *m = marks.Get(Current);
if (!Play && m) {
displayFrames = true;
int p = SkipFrames(Forward ? 1 : -1);
cMark *m2;
if (Forward) {
if (Frames > 0) {
// Handle marks at the same offset:
while ((m2 = marks.Next(m)) != NULL && m2->Position() == m->Position())
m = m2;
// Don't skip the next mark:
if ((m2 = marks.Next(m)) != NULL)
Frames = min(Frames, m2->Position() - m->Position() - 1);
}
else {
// Handle marks at the same offset:
while ((m2 = marks.Prev(m)) != NULL && m2->Position() == m->Position())
m = m2;
// Don't skip the next mark:
if ((m2 = marks.Prev(m)) != NULL)
Frames = -min(-Frames, m->Position() - m2->Position() - 1);
}
int p = SkipFrames(Frames);
m->SetPosition(p);
Goto(m->Position(), true);
marksModified = true;
}
else if (!MarkRequired)
Goto(SkipFrames(Frames), !Play);
}
}
@ -5287,12 +5411,10 @@ void cReplayControl::EditTest(void)
if (!m)
m = marks.GetNext(Current);
if (m) {
if ((m->Index() & 0x01) != 0)
if ((m->Index() & 0x01) != 0 && !Setup.SkipEdited) // when skipping edited parts we also need to jump to end marks
m = marks.Next(m);
if (m) {
if (m)
Goto(m->Position() - SecondsToFrames(3, FramesPerSecond()));
Play();
}
}
}
}
@ -5384,9 +5506,13 @@ eOSState cReplayControl::ProcessKey(eKeys Key)
case kMarkJumpForward|k_Repeat:
case kMarkJumpForward: MarkJump(true); break;
case kMarkMoveBack|k_Repeat:
case kMarkMoveBack: MarkMove(false); break;
case kMarkMoveBack: MarkMove(-1, true); break;
case kMarkMoveForward|k_Repeat:
case kMarkMoveForward: MarkMove(true); break;
case kMarkMoveForward: MarkMove(+1, true); break;
case kMarkSkipBack|k_Repeat:
case kMarkSkipBack: MarkMove(-binarySkipper.GetValue(RAWKEY(Key)), false); break;
case kMarkSkipForward|k_Repeat:
case kMarkSkipForward: MarkMove(+binarySkipper.GetValue(RAWKEY(Key)), false); break;
case kEditCut: EditCut(); break;
case kEditTest: EditTest(); break;
default: {

18
menu.h
View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: menu.h 3.6 2015/01/15 11:12:57 kls Exp $
* $Id: menu.h 3.7 2015/01/27 11:38:20 kls Exp $
*/
#ifndef __MENU_H
@ -270,9 +270,23 @@ public:
static bool StateChanged(int &State);
};
class cBinarySkipper {
private:
int *initialValue;
int currentValue;
double framesPerSecond;
eKeys lastKey;
cTimeMs timeout;
public:
cBinarySkipper(void);
void Initialize(int *InitialValue, double FramesPerSecond);
int GetValue(eKeys Key);
};
class cReplayControl : public cDvbPlayerControl {
private:
cSkinDisplayReplay *displayReplay;
cBinarySkipper binarySkipper;
cMarks marks;
bool marksModified;
bool visible, modeOnly, shown, displayFrames;
@ -292,7 +306,7 @@ private:
bool ShowProgress(bool Initial);
void MarkToggle(void);
void MarkJump(bool Forward);
void MarkMove(bool Forward);
void MarkMove(int Frames, bool MarkRequired);
void EditCut(void);
void EditTest(void);
public:

36
nit.c
View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: nit.c 3.3 2014/03/16 10:38:31 kls Exp $
* $Id: nit.c 3.4 2015/02/01 13:46:00 kls Exp $
*/
#include "nit.h"
@ -357,6 +357,40 @@ void cNitFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
}
}
break;
case SI::LogicalChannelDescriptorTag: {
SI::LogicalChannelDescriptor *lcd = (SI::LogicalChannelDescriptor *)d;
SI::LogicalChannelDescriptor::LogicalChannel LogicalChannel;
for (SI::Loop::Iterator it4; lcd->logicalChannelLoop.getNext(LogicalChannel, it4); ) {
int lcn = LogicalChannel.getLogicalChannelNumber();
int sid = LogicalChannel.getServiceId();
if (LogicalChannel.getVisibleServiceFlag()) {
for (cChannel *Channel = Channels.First(); Channel; Channel = Channels.Next(Channel)) {
if (!Channel->GroupSep() && Channel->Sid() == sid && Channel->Nid() == ts.getOriginalNetworkId() && Channel->Tid() == ts.getTransportStreamId()) {
Channel->SetLcn(lcn);
break;
}
}
}
}
}
break;
case SI::HdSimulcastLogicalChannelDescriptorTag: {
SI::HdSimulcastLogicalChannelDescriptor *lcd = (SI::HdSimulcastLogicalChannelDescriptor *)d;
SI::HdSimulcastLogicalChannelDescriptor::HdSimulcastLogicalChannel HdSimulcastLogicalChannel;
for (SI::Loop::Iterator it4; lcd->hdSimulcastLogicalChannelLoop.getNext(HdSimulcastLogicalChannel, it4); ) {
int lcn = HdSimulcastLogicalChannel.getLogicalChannelNumber();
int sid = HdSimulcastLogicalChannel.getServiceId();
if (HdSimulcastLogicalChannel.getVisibleServiceFlag()) {
for (cChannel *Channel = Channels.First(); Channel; Channel = Channels.Next(Channel)) {
if (!Channel->GroupSep() && Channel->Sid() == sid && Channel->Nid() == ts.getOriginalNetworkId() && Channel->Tid() == ts.getTransportStreamId()) {
Channel->SetLcn(lcn);
break;
}
}
}
}
}
break;
default: ;
}
delete d;

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 2.0.0\n"
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
"POT-Creation-Date: 2015-01-12 15:40+0100\n"
"POT-Creation-Date: 2015-01-30 13:14+0100\n"
"PO-Revision-Date: 2008-10-16 11:16-0400\n"
"Last-Translator: Osama Alrawab <alrawab@hotmail.com>\n"
"Language-Team: Arabic <ar@li.org>\n"
@ -23,6 +23,9 @@ msgstr ""
msgid "*** Invalid Channel ***"
msgstr "*** قناة خاطئة ***"
msgid "CAM activated!"
msgstr ""
msgid "Channel not available!"
msgstr "القناة غير متاحة"
@ -1112,9 +1115,19 @@ msgstr "الكامة موجودة"
msgid "CAM ready"
msgstr "الكامة جاهزة"
#. TRANSLATORS: note the leading blank!
msgid " (activating)"
msgstr ""
msgid "CAM"
msgstr "الكامة "
msgid "Button$Cancel activation"
msgstr ""
msgid "Button$Activate"
msgstr ""
msgid "Button$Menu"
msgstr "القائمة"
@ -1127,6 +1140,9 @@ msgstr "فتح قائمة الكامة"
msgid "Can't open CAM menu!"
msgstr "تعذر فتح قائمة الكامة"
msgid "Can't activate CAM!"
msgstr ""
msgid "CAM is in use - really reset?"
msgstr "الكامة مستخدمة الان هل تريد اعادة تشغيلها"
@ -1220,6 +1236,21 @@ msgstr "Progress display time (s)"
msgid "Setup.Replay$Pause replay when setting mark"
msgstr "Pause replay when setting mark"
msgid "Setup.Replay$Pause replay when jumping to a mark"
msgstr ""
msgid "Setup.Replay$Skip edited parts"
msgstr ""
msgid "Setup.Replay$Pause replay at last mark"
msgstr ""
msgid "Setup.Replay$Binary skip initial value (s)"
msgstr ""
msgid "Setup.Replay$Binary skip timeout (s)"
msgstr ""
msgid "Setup.Replay$Resume ID"
msgstr "رقم المواصلة"

View File

@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 2.0.0\n"
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
"POT-Creation-Date: 2015-01-12 15:40+0100\n"
"POT-Creation-Date: 2015-01-30 13:14+0100\n"
"PO-Revision-Date: 2008-03-02 19:02+0100\n"
"Last-Translator: Luca Olivetti <luca@ventoso.org>\n"
"Language-Team: Catalan <vdr@linuxtv.org>\n"
@ -22,6 +22,9 @@ msgstr ""
msgid "*** Invalid Channel ***"
msgstr "*** Canal incorrecte ***"
msgid "CAM activated!"
msgstr ""
msgid "Channel not available!"
msgstr "Canal no disponible!"
@ -1111,9 +1114,19 @@ msgstr "CAM present"
msgid "CAM ready"
msgstr "CAM preparat"
#. TRANSLATORS: note the leading blank!
msgid " (activating)"
msgstr ""
msgid "CAM"
msgstr "CAM"
msgid "Button$Cancel activation"
msgstr ""
msgid "Button$Activate"
msgstr ""
msgid "Button$Menu"
msgstr "Menú"
@ -1126,6 +1139,9 @@ msgstr "Obrint menu CAM..."
msgid "Can't open CAM menu!"
msgstr "No puc obrir el menú de la CAM!"
msgid "Can't activate CAM!"
msgstr ""
msgid "CAM is in use - really reset?"
msgstr "CAM en ús - reiniciar?"
@ -1219,6 +1235,21 @@ msgstr "Visualitzaci
msgid "Setup.Replay$Pause replay when setting mark"
msgstr "Pausar reproducció en establir marca"
msgid "Setup.Replay$Pause replay when jumping to a mark"
msgstr ""
msgid "Setup.Replay$Skip edited parts"
msgstr ""
msgid "Setup.Replay$Pause replay at last mark"
msgstr ""
msgid "Setup.Replay$Binary skip initial value (s)"
msgstr ""
msgid "Setup.Replay$Binary skip timeout (s)"
msgstr ""
msgid "Setup.Replay$Resume ID"
msgstr "ID de Continuar"

View File

@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 2.0.0\n"
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
"POT-Creation-Date: 2015-01-12 15:40+0100\n"
"POT-Creation-Date: 2015-01-30 13:14+0100\n"
"PO-Revision-Date: 2010-05-06 11:00+0200\n"
"Last-Translator: Aleš Juřík <ajurik@quick.cz>\n"
"Language-Team: Czech <vdr@linuxtv.org>\n"
@ -22,6 +22,9 @@ msgstr ""
msgid "*** Invalid Channel ***"
msgstr "*** Neplatný kanál ***"
msgid "CAM activated!"
msgstr ""
msgid "Channel not available!"
msgstr "Kanál není dostupný!"
@ -1111,9 +1114,19 @@ msgstr "CAM přítomen"
msgid "CAM ready"
msgstr "CAM připraven"
#. TRANSLATORS: note the leading blank!
msgid " (activating)"
msgstr ""
msgid "CAM"
msgstr "CAM"
msgid "Button$Cancel activation"
msgstr ""
msgid "Button$Activate"
msgstr ""
msgid "Button$Menu"
msgstr "Menu"
@ -1126,6 +1139,9 @@ msgstr "Otevírá se menu CAM..."
msgid "Can't open CAM menu!"
msgstr "Menu CAM není dostupné"
msgid "Can't activate CAM!"
msgstr ""
msgid "CAM is in use - really reset?"
msgstr "CAM se používá - opravdu restartovat?"
@ -1219,6 +1235,21 @@ msgstr "Čas zobrazení ukazatele průběhu (s)"
msgid "Setup.Replay$Pause replay when setting mark"
msgstr "Pozastavit přehrávání při nastavování značky"
msgid "Setup.Replay$Pause replay when jumping to a mark"
msgstr ""
msgid "Setup.Replay$Skip edited parts"
msgstr ""
msgid "Setup.Replay$Pause replay at last mark"
msgstr ""
msgid "Setup.Replay$Binary skip initial value (s)"
msgstr ""
msgid "Setup.Replay$Binary skip timeout (s)"
msgstr ""
msgid "Setup.Replay$Resume ID"
msgstr "ID obnovení"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 2.0.0\n"
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
"POT-Creation-Date: 2015-01-12 15:40+0100\n"
"POT-Creation-Date: 2015-01-30 13:14+0100\n"
"PO-Revision-Date: 2007-08-12 14:17+0200\n"
"Last-Translator: Mogens Elneff <mogens@elneff.dk>\n"
"Language-Team: Danish <vdr@linuxtv.org>\n"
@ -19,6 +19,9 @@ msgstr ""
msgid "*** Invalid Channel ***"
msgstr "*** Ugyldig kanal! ***"
msgid "CAM activated!"
msgstr ""
msgid "Channel not available!"
msgstr "Kanal er ikke tilgængelig!"
@ -1108,9 +1111,19 @@ msgstr "CAM til stede"
msgid "CAM ready"
msgstr "CAM klar"
#. TRANSLATORS: note the leading blank!
msgid " (activating)"
msgstr ""
msgid "CAM"
msgstr "CAM"
msgid "Button$Cancel activation"
msgstr ""
msgid "Button$Activate"
msgstr ""
msgid "Button$Menu"
msgstr "Menu"
@ -1123,6 +1136,9 @@ msgstr "
msgid "Can't open CAM menu!"
msgstr "Kan ikke åbne CAM menuen!"
msgid "Can't activate CAM!"
msgstr ""
msgid "CAM is in use - really reset?"
msgstr "CAM er i brug - virkelig nulstille?"
@ -1216,6 +1232,21 @@ msgstr ""
msgid "Setup.Replay$Pause replay when setting mark"
msgstr ""
msgid "Setup.Replay$Pause replay when jumping to a mark"
msgstr ""
msgid "Setup.Replay$Skip edited parts"
msgstr ""
msgid "Setup.Replay$Pause replay at last mark"
msgstr ""
msgid "Setup.Replay$Binary skip initial value (s)"
msgstr ""
msgid "Setup.Replay$Binary skip timeout (s)"
msgstr ""
msgid "Setup.Replay$Resume ID"
msgstr "Genoptagelses ID"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 2.0.0\n"
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
"POT-Creation-Date: 2015-01-12 15:40+0100\n"
"POT-Creation-Date: 2015-01-30 13:14+0100\n"
"PO-Revision-Date: 2010-01-16 16:46+0100\n"
"Last-Translator: Klaus Schmidinger <vdr@tvdr.de>\n"
"Language-Team: German <vdr@linuxtv.org>\n"
@ -19,6 +19,9 @@ msgstr ""
msgid "*** Invalid Channel ***"
msgstr "*** Ungültiger Kanal ***"
msgid "CAM activated!"
msgstr "CAM aktiviert!"
msgid "Channel not available!"
msgstr "Kanal nicht verfügbar!"
@ -1108,9 +1111,19 @@ msgstr "CAM vorhanden"
msgid "CAM ready"
msgstr "CAM bereit"
#. TRANSLATORS: note the leading blank!
msgid " (activating)"
msgstr " (wird aktiviert)"
msgid "CAM"
msgstr "CAM"
msgid "Button$Cancel activation"
msgstr "Aktivierung abbrechen"
msgid "Button$Activate"
msgstr "Aktivieren"
msgid "Button$Menu"
msgstr "Menü"
@ -1123,6 +1136,9 @@ msgstr "CAM-Men
msgid "Can't open CAM menu!"
msgstr "CAM-Menü kann nicht geöffnet werden!"
msgid "Can't activate CAM!"
msgstr "CAM kann nicht aktiviert werden!"
msgid "CAM is in use - really reset?"
msgstr "CAM wird benutzt - wirklich zurücksetzen?"
@ -1216,6 +1232,21 @@ msgstr "Anzeigedauer f
msgid "Setup.Replay$Pause replay when setting mark"
msgstr "Pause beim Setzen einer Schnittmarke"
msgid "Setup.Replay$Pause replay when jumping to a mark"
msgstr "Pause beim Sprung auf eine Schnittmarke"
msgid "Setup.Replay$Skip edited parts"
msgstr "Herausgeschnittene Teile überspringen"
msgid "Setup.Replay$Pause replay at last mark"
msgstr "Pause an der letzten Schnittmarke"
msgid "Setup.Replay$Binary skip initial value (s)"
msgstr "Anfangswert für binäres Springen (s)"
msgid "Setup.Replay$Binary skip timeout (s)"
msgstr "Zeitlimit für binäres Springen (ms)"
msgid "Setup.Replay$Resume ID"
msgstr "Wiedergabe-ID"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 2.0.0\n"
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
"POT-Creation-Date: 2015-01-12 15:40+0100\n"
"POT-Creation-Date: 2015-01-30 13:14+0100\n"
"PO-Revision-Date: 2007-08-12 14:17+0200\n"
"Last-Translator: Dimitrios Dimitrakos <mail@dimitrios.de>\n"
"Language-Team: Greek <vdr@linuxtv.org>\n"
@ -19,6 +19,9 @@ msgstr ""
msgid "*** Invalid Channel ***"
msgstr "*** Áêõñï êáíÜëç ***"
msgid "CAM activated!"
msgstr ""
msgid "Channel not available!"
msgstr "Ôï êáíÜëç äÝí åßíáé äéáèÝóéìï!"
@ -1108,9 +1111,19 @@ msgstr ""
msgid "CAM ready"
msgstr ""
#. TRANSLATORS: note the leading blank!
msgid " (activating)"
msgstr ""
msgid "CAM"
msgstr "CAM"
msgid "Button$Cancel activation"
msgstr ""
msgid "Button$Activate"
msgstr ""
msgid "Button$Menu"
msgstr "Måíïý"
@ -1123,6 +1136,9 @@ msgstr ""
msgid "Can't open CAM menu!"
msgstr "Áäýíáôç ç ðñüóâáóç óôü CAM ìåíïý!"
msgid "Can't activate CAM!"
msgstr ""
msgid "CAM is in use - really reset?"
msgstr ""
@ -1216,6 +1232,21 @@ msgstr ""
msgid "Setup.Replay$Pause replay when setting mark"
msgstr ""
msgid "Setup.Replay$Pause replay when jumping to a mark"
msgstr ""
msgid "Setup.Replay$Skip edited parts"
msgstr ""
msgid "Setup.Replay$Pause replay at last mark"
msgstr ""
msgid "Setup.Replay$Binary skip initial value (s)"
msgstr ""
msgid "Setup.Replay$Binary skip timeout (s)"
msgstr ""
msgid "Setup.Replay$Resume ID"
msgstr "ID áíáìåôÜäïóçò"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 2.0.0\n"
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
"POT-Creation-Date: 2015-01-12 15:40+0100\n"
"POT-Creation-Date: 2015-01-30 13:14+0100\n"
"PO-Revision-Date: 2008-03-02 19:02+0100\n"
"Last-Translator: Luca Olivetti <luca@ventoso.org>\n"
"Language-Team: Spanish <vdr@linuxtv.org>\n"
@ -20,6 +20,9 @@ msgstr ""
msgid "*** Invalid Channel ***"
msgstr "*** Canal no válido ***"
msgid "CAM activated!"
msgstr ""
msgid "Channel not available!"
msgstr "¡Canal no disponible!"
@ -1109,9 +1112,19 @@ msgstr "CAM presente"
msgid "CAM ready"
msgstr "CAM preparado"
#. TRANSLATORS: note the leading blank!
msgid " (activating)"
msgstr ""
msgid "CAM"
msgstr "CAM"
msgid "Button$Cancel activation"
msgstr ""
msgid "Button$Activate"
msgstr ""
msgid "Button$Menu"
msgstr "Menú"
@ -1124,6 +1137,9 @@ msgstr "Abriendo el men
msgid "Can't open CAM menu!"
msgstr "¡No se puede abrir el menú CAM!"
msgid "Can't activate CAM!"
msgstr ""
msgid "CAM is in use - really reset?"
msgstr "CAM en uso - ¿reiniciar?"
@ -1217,6 +1233,21 @@ msgstr "Visualizaci
msgid "Setup.Replay$Pause replay when setting mark"
msgstr "Pausar reproducción al establecer marca"
msgid "Setup.Replay$Pause replay when jumping to a mark"
msgstr ""
msgid "Setup.Replay$Skip edited parts"
msgstr ""
msgid "Setup.Replay$Pause replay at last mark"
msgstr ""
msgid "Setup.Replay$Binary skip initial value (s)"
msgstr ""
msgid "Setup.Replay$Binary skip timeout (s)"
msgstr ""
msgid "Setup.Replay$Resume ID"
msgstr "ID de continuación"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 2.0.0\n"
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
"POT-Creation-Date: 2015-01-12 15:40+0100\n"
"POT-Creation-Date: 2015-01-30 13:14+0100\n"
"PO-Revision-Date: 2007-08-12 14:17+0200\n"
"Last-Translator: Arthur Konovalov <artlov@gmail.com>\n"
"Language-Team: Estonian <vdr@linuxtv.org>\n"
@ -17,7 +17,10 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
msgid "*** Invalid Channel ***"
msgstr "*** Vigane kanal ***"
msgstr "*** Kehtetu kanal ***"
msgid "CAM activated!"
msgstr ""
msgid "Channel not available!"
msgstr "Kanal ei ole kättesaadav!"
@ -74,16 +77,16 @@ msgid "Rolloff"
msgstr "Rolloff"
msgid "StreamId"
msgstr "Stream-tunnus"
msgstr "Vootunnus"
msgid "Pilot"
msgstr ""
msgstr "Piloot"
msgid "T2SystemId"
msgstr ""
msgstr "T2 tunnus"
msgid "SISO/MISO"
msgstr ""
msgstr "SISO/MISO"
msgid "Starting EPG scan"
msgstr "EPG skaneerimine käivitatud"
@ -573,10 +576,10 @@ msgid "Sid"
msgstr "Sid"
msgid "Nid"
msgstr ""
msgstr "Nid"
msgid "Tid"
msgstr ""
msgstr "Tid"
msgid "Channel settings are not unique!"
msgstr "Kanaliseaded ei ole unikaalsed!"
@ -597,7 +600,7 @@ msgid "Button$Mark"
msgstr "Märkimine"
msgid "Channel is being used by a timer!"
msgstr "Kanal on taimeri kasutuses!"
msgstr "Kanal on taimeris kasutusel!"
msgid "Delete channel?"
msgstr "Kustutada kanal?"
@ -1108,9 +1111,19 @@ msgstr "CAM esitletud"
msgid "CAM ready"
msgstr "CAM töövalmis"
#. TRANSLATORS: note the leading blank!
msgid " (activating)"
msgstr ""
msgid "CAM"
msgstr "CAM"
msgid "Button$Cancel activation"
msgstr ""
msgid "Button$Activate"
msgstr ""
msgid "Button$Menu"
msgstr "Menüü"
@ -1123,6 +1136,9 @@ msgstr "CAM-menüü avamine..."
msgid "Can't open CAM menu!"
msgstr "Ei saa avada CAM menüüd!"
msgid "Can't activate CAM!"
msgstr ""
msgid "CAM is in use - really reset?"
msgstr "CAM on kasutuses - taaskäivitada?"
@ -1216,6 +1232,21 @@ msgstr "Edenemiseriba kuvamise aeg (s)"
msgid "Setup.Replay$Pause replay when setting mark"
msgstr "Taasesituse peatamine markeri seadmisel"
msgid "Setup.Replay$Pause replay when jumping to a mark"
msgstr ""
msgid "Setup.Replay$Skip edited parts"
msgstr ""
msgid "Setup.Replay$Pause replay at last mark"
msgstr ""
msgid "Setup.Replay$Binary skip initial value (s)"
msgstr ""
msgid "Setup.Replay$Binary skip timeout (s)"
msgstr ""
msgid "Setup.Replay$Resume ID"
msgstr "Jätkamise ID"
@ -1253,10 +1284,10 @@ msgid "Setup.Miscellaneous$Initial volume"
msgstr "Helitugevus käivitamisel"
msgid "Setup.Miscellaneous$Volume steps"
msgstr ""
msgstr "Helitugevuse samm"
msgid "Setup.Miscellaneous$Volume linearize"
msgstr ""
msgstr "Helitugevuse lineariseerimine"
msgid "Setup.Miscellaneous$Channels wrap"
msgstr "Kanalite ringkerimine"

View File

@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 2.0.0\n"
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
"POT-Creation-Date: 2015-01-12 15:40+0100\n"
"POT-Creation-Date: 2015-01-30 13:14+0100\n"
"PO-Revision-Date: 2007-08-15 15:52+0200\n"
"Last-Translator: Matti Lehtimäki <matti.lehtimaki@gmail.com>\n"
"Language-Team: Finnish <vdr@linuxtv.org>\n"
@ -23,6 +23,9 @@ msgstr ""
msgid "*** Invalid Channel ***"
msgstr "*** Virheellinen kanavavalinta ***"
msgid "CAM activated!"
msgstr "CA-moduuli aktivoitu!"
msgid "Channel not available!"
msgstr "Kanava ei ole käytettävissä!"
@ -1112,9 +1115,19 @@ msgstr "CAM havaittu"
msgid "CAM ready"
msgstr "CAM valmis"
#. TRANSLATORS: note the leading blank!
msgid " (activating)"
msgstr " (aktivoidaan)"
msgid "CAM"
msgstr "CAM"
msgid "Button$Cancel activation"
msgstr "Peruuta aktivointi"
msgid "Button$Activate"
msgstr "Aktivoi"
msgid "Button$Menu"
msgstr "Valikko"
@ -1127,6 +1140,9 @@ msgstr "Avataan CA-moduulin valikkoa..."
msgid "Can't open CAM menu!"
msgstr "CA-moduulin valikko ei saatavilla"
msgid "Can't activate CAM!"
msgstr "CA-moduulin aktivointi epäonnistui!"
msgid "CAM is in use - really reset?"
msgstr "CA-moduuli käytössä - nollataanko?"
@ -1220,6 +1236,21 @@ msgstr "Näytä toiston kontrollit (s)"
msgid "Setup.Replay$Pause replay when setting mark"
msgstr "Pysäytä toisto asetettaessa merkki"
msgid "Setup.Replay$Pause replay when jumping to a mark"
msgstr "Pysäytä toisto hypätessä merkkiin"
msgid "Setup.Replay$Skip edited parts"
msgstr "Ohita muokatut kohdat"
msgid "Setup.Replay$Pause replay at last mark"
msgstr "Pysäytä toisto viimeiseen merkkiin"
msgid "Setup.Replay$Binary skip initial value (s)"
msgstr "Binäärihypyn oletuspituus (s)"
msgid "Setup.Replay$Binary skip timeout (s)"
msgstr "Binäärihypyn odotusaika (ms)"
msgid "Setup.Replay$Resume ID"
msgstr "Tallenteen paluutunniste"
@ -1257,10 +1288,10 @@ msgid "Setup.Miscellaneous$Initial volume"
msgstr "Äänenvoimakkuus käynnistettäessä"
msgid "Setup.Miscellaneous$Volume steps"
msgstr ""
msgstr "Äänenvoimakkuuden askellus"
msgid "Setup.Miscellaneous$Volume linearize"
msgstr ""
msgstr "Äänenvoimakkuuden lineaarisuus"
msgid "Setup.Miscellaneous$Channels wrap"
msgstr "Kanavien rullaus"

View File

@ -17,7 +17,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 2.0.0\n"
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
"POT-Creation-Date: 2015-01-12 15:40+0100\n"
"POT-Creation-Date: 2015-01-30 13:14+0100\n"
"PO-Revision-Date: 2013-02-24 12:56+0100\n"
"Last-Translator: Dominique Plu <dplu@free.fr>\n"
"Language-Team: French <vdr@linuxtv.org>\n"
@ -29,6 +29,9 @@ msgstr ""
msgid "*** Invalid Channel ***"
msgstr "*** Chaîne invalide ! ***"
msgid "CAM activated!"
msgstr ""
msgid "Channel not available!"
msgstr "Chaîne non disponible !"
@ -1118,9 +1121,19 @@ msgstr "CAM présent"
msgid "CAM ready"
msgstr "CAM prêt"
#. TRANSLATORS: note the leading blank!
msgid " (activating)"
msgstr ""
msgid "CAM"
msgstr "CAM"
msgid "Button$Cancel activation"
msgstr ""
msgid "Button$Activate"
msgstr ""
msgid "Button$Menu"
msgstr "Menu"
@ -1133,6 +1146,9 @@ msgstr "Ouverture du menu CAM..."
msgid "Can't open CAM menu!"
msgstr "Impossible d'ouvrir le menu CAM !"
msgid "Can't activate CAM!"
msgstr ""
msgid "CAM is in use - really reset?"
msgstr "CAM en cours d'utilisation - confirmer réinitialisation ?"
@ -1226,6 +1242,21 @@ msgstr "Afficher la barre de progression (s)"
msgid "Setup.Replay$Pause replay when setting mark"
msgstr "Arrêt lecture si ajout marqueur"
msgid "Setup.Replay$Pause replay when jumping to a mark"
msgstr ""
msgid "Setup.Replay$Skip edited parts"
msgstr ""
msgid "Setup.Replay$Pause replay at last mark"
msgstr ""
msgid "Setup.Replay$Binary skip initial value (s)"
msgstr ""
msgid "Setup.Replay$Binary skip timeout (s)"
msgstr ""
msgid "Setup.Replay$Resume ID"
msgstr "ID de reprise"

View File

@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 2.0.0\n"
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
"POT-Creation-Date: 2015-01-12 15:40+0100\n"
"POT-Creation-Date: 2015-01-30 13:14+0100\n"
"PO-Revision-Date: 2008-03-17 19:00+0100\n"
"Last-Translator: Adrian Caval <anrxc@sysphere.org>\n"
"Language-Team: Croatian <vdr@linuxtv.org>\n"
@ -21,6 +21,9 @@ msgstr ""
msgid "*** Invalid Channel ***"
msgstr "*** Neispravan Program ***"
msgid "CAM activated!"
msgstr ""
msgid "Channel not available!"
msgstr "Program nije dostupan!"
@ -1110,9 +1113,19 @@ msgstr "CAM prisutan"
msgid "CAM ready"
msgstr "CAM spreman"
#. TRANSLATORS: note the leading blank!
msgid " (activating)"
msgstr ""
msgid "CAM"
msgstr "CAM"
msgid "Button$Cancel activation"
msgstr ""
msgid "Button$Activate"
msgstr ""
msgid "Button$Menu"
msgstr "Izbornik"
@ -1125,6 +1138,9 @@ msgstr "Otvaram CAM izbornik..."
msgid "Can't open CAM menu!"
msgstr "Otvaranje CAM izbornika neuspje¹no!"
msgid "Can't activate CAM!"
msgstr ""
msgid "CAM is in use - really reset?"
msgstr "CAM se koristi - ponovno pokrenuti unatoè?"
@ -1218,6 +1234,21 @@ msgstr ""
msgid "Setup.Replay$Pause replay when setting mark"
msgstr ""
msgid "Setup.Replay$Pause replay when jumping to a mark"
msgstr ""
msgid "Setup.Replay$Skip edited parts"
msgstr ""
msgid "Setup.Replay$Pause replay at last mark"
msgstr ""
msgid "Setup.Replay$Binary skip initial value (s)"
msgstr ""
msgid "Setup.Replay$Binary skip timeout (s)"
msgstr ""
msgid "Setup.Replay$Resume ID"
msgstr "ID nastavka"

View File

@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 2.0.0\n"
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
"POT-Creation-Date: 2015-01-12 15:40+0100\n"
"POT-Creation-Date: 2015-01-30 13:14+0100\n"
"PO-Revision-Date: 2013-03-01 19:22+0200\n"
"Last-Translator: István Füley <ifuley@tigercomp.ro>\n"
"Language-Team: Hungarian <vdr@linuxtv.org>\n"
@ -23,6 +23,9 @@ msgstr ""
msgid "*** Invalid Channel ***"
msgstr "*** Érvénytelen csatorna ***"
msgid "CAM activated!"
msgstr ""
msgid "Channel not available!"
msgstr "Az adó nem elérhető"
@ -1112,9 +1115,19 @@ msgstr "CAM jelen"
msgid "CAM ready"
msgstr "CAM működik"
#. TRANSLATORS: note the leading blank!
msgid " (activating)"
msgstr ""
msgid "CAM"
msgstr "CAM"
msgid "Button$Cancel activation"
msgstr ""
msgid "Button$Activate"
msgstr ""
msgid "Button$Menu"
msgstr "Menü"
@ -1127,6 +1140,9 @@ msgstr "A CAM menü nyitása..."
msgid "Can't open CAM menu!"
msgstr "A CAM menü nem nyitható"
msgid "Can't activate CAM!"
msgstr ""
msgid "CAM is in use - really reset?"
msgstr "CAM használatban - valóban újraindítjuk?"
@ -1220,6 +1236,21 @@ msgstr "Lejátszósáv felüntetésének ideje (mp)"
msgid "Setup.Replay$Pause replay when setting mark"
msgstr "A visszajátszás megállítása vágópont kijelölésnél"
msgid "Setup.Replay$Pause replay when jumping to a mark"
msgstr ""
msgid "Setup.Replay$Skip edited parts"
msgstr ""
msgid "Setup.Replay$Pause replay at last mark"
msgstr ""
msgid "Setup.Replay$Binary skip initial value (s)"
msgstr ""
msgid "Setup.Replay$Binary skip timeout (s)"
msgstr ""
msgid "Setup.Replay$Resume ID"
msgstr "Lejátszás ID"

View File

@ -11,8 +11,8 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 2.0.0\n"
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
"POT-Creation-Date: 2015-01-12 15:40+0100\n"
"PO-Revision-Date: 2014-03-23 00:54+0100\n"
"POT-Creation-Date: 2015-01-30 13:14+0100\n"
"PO-Revision-Date: 2015-01-19 20:19+0100\n"
"Last-Translator: Diego Pierotto <vdr-italian@tiscali.it>\n"
"Language-Team: Italian <vdr@linuxtv.org>\n"
"Language: it\n"
@ -26,6 +26,9 @@ msgstr ""
msgid "*** Invalid Channel ***"
msgstr "*** Canale NON valido ***"
msgid "CAM activated!"
msgstr ""
msgid "Channel not available!"
msgstr "Canale non disponibile!"
@ -1115,9 +1118,19 @@ msgstr "La CAM è presente"
msgid "CAM ready"
msgstr "La CAM è pronta"
#. TRANSLATORS: note the leading blank!
msgid " (activating)"
msgstr ""
msgid "CAM"
msgstr "Accesso condizionato CAM"
msgid "Button$Cancel activation"
msgstr ""
msgid "Button$Activate"
msgstr ""
msgid "Button$Menu"
msgstr "Menu"
@ -1130,6 +1143,9 @@ msgstr "Apertura menu CAM..."
msgid "Can't open CAM menu!"
msgstr "Impossibile aprire il menu CAM!"
msgid "Can't activate CAM!"
msgstr ""
msgid "CAM is in use - really reset?"
msgstr "La CAM è in uso - vuoi reimpostarla?"
@ -1223,6 +1239,21 @@ msgstr "Mostra tempo elaborazione (s)"
msgid "Setup.Replay$Pause replay when setting mark"
msgstr "Pausa riproduzione durante impostazione segni"
msgid "Setup.Replay$Pause replay when jumping to a mark"
msgstr ""
msgid "Setup.Replay$Skip edited parts"
msgstr ""
msgid "Setup.Replay$Pause replay at last mark"
msgstr ""
msgid "Setup.Replay$Binary skip initial value (s)"
msgstr ""
msgid "Setup.Replay$Binary skip timeout (s)"
msgstr ""
msgid "Setup.Replay$Resume ID"
msgstr "ID di ripristino"
@ -1260,10 +1291,10 @@ msgid "Setup.Miscellaneous$Initial volume"
msgstr "Volume iniziale"
msgid "Setup.Miscellaneous$Volume steps"
msgstr ""
msgstr "Volume a tacche"
msgid "Setup.Miscellaneous$Volume linearize"
msgstr ""
msgstr "Volume lineare"
msgid "Setup.Miscellaneous$Channels wrap"
msgstr "Riavvolgimento canali"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 2.0.0\n"
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
"POT-Creation-Date: 2015-01-12 15:40+0100\n"
"POT-Creation-Date: 2015-01-30 13:14+0100\n"
"PO-Revision-Date: 2010-10-30 11:55+0200\n"
"Last-Translator: Valdemaras Pipiras <varas@ambernet.lt>\n"
"Language-Team: Lithuanian <vdr@linuxtv.org>\n"
@ -19,6 +19,9 @@ msgstr ""
msgid "*** Invalid Channel ***"
msgstr "*** Blogi kanalo nustatymai ***"
msgid "CAM activated!"
msgstr ""
msgid "Channel not available!"
msgstr "Kanalas neegzistuoja!"
@ -1108,9 +1111,19 @@ msgstr "Dekodavimo modulis (CAM) įjungtas"
msgid "CAM ready"
msgstr "Dekodavimo modulis (CAM) paruoštas darbui"
#. TRANSLATORS: note the leading blank!
msgid " (activating)"
msgstr ""
msgid "CAM"
msgstr "Dekodavimo modulis (CAM)"
msgid "Button$Cancel activation"
msgstr ""
msgid "Button$Activate"
msgstr ""
msgid "Button$Menu"
msgstr "Meniu"
@ -1123,6 +1136,9 @@ msgstr "Atidaromas dekodavimo modulio meniu..."
msgid "Can't open CAM menu!"
msgstr "Negali atidaryti dekodavimo modulio meniu!"
msgid "Can't activate CAM!"
msgstr ""
msgid "CAM is in use - really reset?"
msgstr "Dekodavimo modulis šiuo metu naudojamas - tikrai perkrauti?"
@ -1216,6 +1232,21 @@ msgstr "Progreso rodymo laikas (s)"
msgid "Setup.Replay$Pause replay when setting mark"
msgstr "Pristabdyti pakartojimą kai vyksta žymėjimas"
msgid "Setup.Replay$Pause replay when jumping to a mark"
msgstr ""
msgid "Setup.Replay$Skip edited parts"
msgstr ""
msgid "Setup.Replay$Pause replay at last mark"
msgstr ""
msgid "Setup.Replay$Binary skip initial value (s)"
msgstr ""
msgid "Setup.Replay$Binary skip timeout (s)"
msgstr ""
msgid "Setup.Replay$Resume ID"
msgstr "Kūrinio ID"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 2.0.0\n"
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
"POT-Creation-Date: 2015-01-12 15:40+0100\n"
"POT-Creation-Date: 2015-01-30 13:14+0100\n"
"PO-Revision-Date: 2012-11-19 15:18+0100\n"
"Last-Translator: Dimitar Petrovski <dimeptr@gmail.com>\n"
"Language-Team: Macedonian <en@li.org>\n"
@ -20,6 +20,9 @@ msgstr ""
msgid "*** Invalid Channel ***"
msgstr "*** Невалиден Канал ***"
msgid "CAM activated!"
msgstr ""
msgid "Channel not available!"
msgstr "Каналот е недостапен!"
@ -1109,9 +1112,19 @@ msgstr "CAM присутен"
msgid "CAM ready"
msgstr "CAM спремен"
#. TRANSLATORS: note the leading blank!
msgid " (activating)"
msgstr ""
msgid "CAM"
msgstr "CAM"
msgid "Button$Cancel activation"
msgstr ""
msgid "Button$Activate"
msgstr ""
msgid "Button$Menu"
msgstr "Мени"
@ -1124,6 +1137,9 @@ msgstr "Отварам CAM мени..."
msgid "Can't open CAM menu!"
msgstr "Неуспешно отварање на CAM менито!"
msgid "Can't activate CAM!"
msgstr ""
msgid "CAM is in use - really reset?"
msgstr "CAM е во употреба - рестартирај?"
@ -1217,6 +1233,21 @@ msgstr "Време на прикажување на прогрес (сек)"
msgid "Setup.Replay$Pause replay when setting mark"
msgstr "Паузирај репродукција кога се внесува ознака"
msgid "Setup.Replay$Pause replay when jumping to a mark"
msgstr ""
msgid "Setup.Replay$Skip edited parts"
msgstr ""
msgid "Setup.Replay$Pause replay at last mark"
msgstr ""
msgid "Setup.Replay$Binary skip initial value (s)"
msgstr ""
msgid "Setup.Replay$Binary skip timeout (s)"
msgstr ""
msgid "Setup.Replay$Resume ID"
msgstr "ID на продолжеток"

View File

@ -12,7 +12,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 2.0.0\n"
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
"POT-Creation-Date: 2015-01-12 15:40+0100\n"
"POT-Creation-Date: 2015-01-30 13:14+0100\n"
"PO-Revision-Date: 2008-02-26 17:20+0100\n"
"Last-Translator: Cedric Dewijs <cedric.dewijs@telfort.nl>\n"
"Language-Team: Dutch <vdr@linuxtv.org>\n"
@ -24,6 +24,9 @@ msgstr ""
msgid "*** Invalid Channel ***"
msgstr "*** Ongeldig kanaal ***"
msgid "CAM activated!"
msgstr ""
msgid "Channel not available!"
msgstr "Kanaal niet beschikbaar"
@ -1113,9 +1116,19 @@ msgstr "CAM aanwezig"
msgid "CAM ready"
msgstr "CAM gereed"
#. TRANSLATORS: note the leading blank!
msgid " (activating)"
msgstr ""
msgid "CAM"
msgstr "CAM"
msgid "Button$Cancel activation"
msgstr ""
msgid "Button$Activate"
msgstr ""
msgid "Button$Menu"
msgstr "Menu"
@ -1128,6 +1141,9 @@ msgstr "CAM-menu wordt geopend..."
msgid "Can't open CAM menu!"
msgstr "Kan CAM-menu niet openen!"
msgid "Can't activate CAM!"
msgstr ""
msgid "CAM is in use - really reset?"
msgstr "CAM wordt gebruikt - werkelijk herstarten?"
@ -1221,6 +1237,21 @@ msgstr "Verlopen tijd tijd (s)"
msgid "Setup.Replay$Pause replay when setting mark"
msgstr "Pauzeer wanneer markering wordt geplaatst"
msgid "Setup.Replay$Pause replay when jumping to a mark"
msgstr ""
msgid "Setup.Replay$Skip edited parts"
msgstr ""
msgid "Setup.Replay$Pause replay at last mark"
msgstr ""
msgid "Setup.Replay$Binary skip initial value (s)"
msgstr ""
msgid "Setup.Replay$Binary skip timeout (s)"
msgstr ""
msgid "Setup.Replay$Resume ID"
msgstr "Hervattings ID"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 2.0.0\n"
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
"POT-Creation-Date: 2015-01-12 15:40+0100\n"
"POT-Creation-Date: 2015-01-30 13:14+0100\n"
"PO-Revision-Date: 2007-08-12 14:17+0200\n"
"Last-Translator: Truls Slevigen <truls@slevigen.no>\n"
"Language-Team: Norwegian Nynorsk <vdr@linuxtv.org>\n"
@ -20,6 +20,9 @@ msgstr ""
msgid "*** Invalid Channel ***"
msgstr "*** Ugyldig Kanal! ***"
msgid "CAM activated!"
msgstr ""
msgid "Channel not available!"
msgstr ""
@ -1109,9 +1112,19 @@ msgstr ""
msgid "CAM ready"
msgstr ""
#. TRANSLATORS: note the leading blank!
msgid " (activating)"
msgstr ""
msgid "CAM"
msgstr "CAM"
msgid "Button$Cancel activation"
msgstr ""
msgid "Button$Activate"
msgstr ""
msgid "Button$Menu"
msgstr "Meny"
@ -1124,6 +1137,9 @@ msgstr ""
msgid "Can't open CAM menu!"
msgstr ""
msgid "Can't activate CAM!"
msgstr ""
msgid "CAM is in use - really reset?"
msgstr ""
@ -1217,6 +1233,21 @@ msgstr ""
msgid "Setup.Replay$Pause replay when setting mark"
msgstr ""
msgid "Setup.Replay$Pause replay when jumping to a mark"
msgstr ""
msgid "Setup.Replay$Skip edited parts"
msgstr ""
msgid "Setup.Replay$Pause replay at last mark"
msgstr ""
msgid "Setup.Replay$Binary skip initial value (s)"
msgstr ""
msgid "Setup.Replay$Binary skip timeout (s)"
msgstr ""
msgid "Setup.Replay$Resume ID"
msgstr "Resume ID"

View File

@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 2.0.0\n"
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
"POT-Creation-Date: 2015-01-12 15:40+0100\n"
"POT-Creation-Date: 2015-01-30 13:14+0100\n"
"PO-Revision-Date: 2008-03-09 12:59+0100\n"
"Last-Translator: Marek Nazarko <mnazarko@gmail.com>\n"
"Language-Team: Polish <vdr@linuxtv.org>\n"
@ -21,6 +21,9 @@ msgstr ""
msgid "*** Invalid Channel ***"
msgstr "*** Niepoprawny kana³ ***"
msgid "CAM activated!"
msgstr ""
msgid "Channel not available!"
msgstr "Kana³ nie jest dostêpny!"
@ -1110,9 +1113,19 @@ msgstr "CAM obecny"
msgid "CAM ready"
msgstr "CAM gotowy"
#. TRANSLATORS: note the leading blank!
msgid " (activating)"
msgstr ""
msgid "CAM"
msgstr "CAM"
msgid "Button$Cancel activation"
msgstr ""
msgid "Button$Activate"
msgstr ""
msgid "Button$Menu"
msgstr "Menu"
@ -1125,6 +1138,9 @@ msgstr "Otwieram menu CAM..."
msgid "Can't open CAM menu!"
msgstr "Nie mo¿na otworzyæ menu CAM!"
msgid "Can't activate CAM!"
msgstr ""
msgid "CAM is in use - really reset?"
msgstr "CAM jest w u¿yciu - naprawdê zresetowaæ?"
@ -1218,6 +1234,21 @@ msgstr "Wy
msgid "Setup.Replay$Pause replay when setting mark"
msgstr "Wstrzymaj odtwarzanie podczas ustawiania zaznaczania"
msgid "Setup.Replay$Pause replay when jumping to a mark"
msgstr ""
msgid "Setup.Replay$Skip edited parts"
msgstr ""
msgid "Setup.Replay$Pause replay at last mark"
msgstr ""
msgid "Setup.Replay$Binary skip initial value (s)"
msgstr ""
msgid "Setup.Replay$Binary skip timeout (s)"
msgstr ""
msgid "Setup.Replay$Resume ID"
msgstr "ID wznowienia"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 2.0.0\n"
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
"POT-Creation-Date: 2015-01-12 15:40+0100\n"
"POT-Creation-Date: 2015-01-30 13:14+0100\n"
"PO-Revision-Date: 2010-03-28 22:49+0100\n"
"Last-Translator: Cris Silva <hudokkow@gmail.com>\n"
"Language-Team: Portuguese <vdr@linuxtv.org>\n"
@ -20,6 +20,9 @@ msgstr ""
msgid "*** Invalid Channel ***"
msgstr "*** Canal inválido ***"
msgid "CAM activated!"
msgstr ""
msgid "Channel not available!"
msgstr "Canal indisponível!"
@ -1109,9 +1112,19 @@ msgstr "CAM presente"
msgid "CAM ready"
msgstr "CAM pronta"
#. TRANSLATORS: note the leading blank!
msgid " (activating)"
msgstr ""
msgid "CAM"
msgstr "CAM"
msgid "Button$Cancel activation"
msgstr ""
msgid "Button$Activate"
msgstr ""
msgid "Button$Menu"
msgstr "Menu"
@ -1124,6 +1137,9 @@ msgstr "A abrir menu da CAM..."
msgid "Can't open CAM menu!"
msgstr "Impossível abrir menu da CAM!"
msgid "Can't activate CAM!"
msgstr ""
msgid "CAM is in use - really reset?"
msgstr "CAM em uso - reiniciar mesmo?"
@ -1217,6 +1233,21 @@ msgstr ""
msgid "Setup.Replay$Pause replay when setting mark"
msgstr ""
msgid "Setup.Replay$Pause replay when jumping to a mark"
msgstr ""
msgid "Setup.Replay$Skip edited parts"
msgstr ""
msgid "Setup.Replay$Pause replay at last mark"
msgstr ""
msgid "Setup.Replay$Binary skip initial value (s)"
msgstr ""
msgid "Setup.Replay$Binary skip timeout (s)"
msgstr ""
msgid "Setup.Replay$Resume ID"
msgstr "ID de resumo"

View File

@ -8,19 +8,22 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 2.0.0\n"
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
"POT-Creation-Date: 2015-01-12 15:40+0100\n"
"PO-Revision-Date: 2013-02-09 23:01+0100\n"
"Last-Translator: Lucian Muresan <lucianm@users.sorceforge.net>\n"
"POT-Creation-Date: 2015-01-30 13:14+0100\n"
"PO-Revision-Date: 2015-01-21 22:34+0100\n"
"Last-Translator: Lucian Muresan <lucianm@users.sourceforge.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-Generator: Poedit 1.5.5\n"
"X-Generator: Poedit 1.6.9\n"
msgid "*** Invalid Channel ***"
msgstr "*** Canal invalid ***"
msgid "CAM activated!"
msgstr ""
msgid "Channel not available!"
msgstr "Canal indisponibil"
@ -79,13 +82,13 @@ msgid "StreamId"
msgstr "Identificator Stream"
msgid "Pilot"
msgstr ""
msgstr "Pilot"
msgid "T2SystemId"
msgstr ""
msgstr "ID sistem T2"
msgid "SISO/MISO"
msgstr ""
msgstr "SISO/MISO"
msgid "Starting EPG scan"
msgstr "Pornesc achiziţia EPG"
@ -575,10 +578,10 @@ msgid "Sid"
msgstr "Sid"
msgid "Nid"
msgstr ""
msgstr "Nid"
msgid "Tid"
msgstr ""
msgstr "Tid"
msgid "Channel settings are not unique!"
msgstr "Parametrii canalului nu sunt univoci!"
@ -741,71 +744,71 @@ msgid "CAM not responding!"
msgstr "CAM-ul nu reacţionează!"
msgid "Edit path"
msgstr ""
msgstr "Editează calea"
msgid "Folder"
msgstr ""
msgstr "Director"
msgid "This folder is currently in use - no changes are possible!"
msgstr ""
msgstr "Acest director tocmai este accesat - nu sunt posibile modificări!"
#, c-format
msgid "Move entire folder containing %d recordings?"
msgstr ""
msgstr "Mut întregul director conținând %d înregistrări?"
msgid "Error while moving folder!"
msgstr ""
msgstr "Eroare la mutarea directorului!"
msgid "Edit recording"
msgstr ""
msgstr "Editează înregistrarea"
msgid "This recording is currently in use - no changes are possible!"
msgstr ""
msgstr "Această înregistrare tocmai este accesată - nu sunt posibile modificări!"
msgid "Button$Cancel cutting"
msgstr ""
msgstr "Anulează tăierea"
msgid "Button$Stop cutting"
msgstr ""
msgstr "Oprește tăierea"
msgid "Button$Cancel moving"
msgstr ""
msgstr "Anuleaza mutarea"
msgid "Button$Stop moving"
msgstr ""
msgstr "Oprește mutarea"
msgid "Button$Cancel copying"
msgstr ""
msgstr "Anulează copierea"
msgid "Button$Stop copying"
msgstr ""
msgstr "Oprește copierea"
msgid "Button$Cut"
msgstr ""
msgstr "Taie"
msgid "Button$Delete marks"
msgstr ""
msgstr "Șterge marcajele"
msgid "Recording vanished!"
msgstr ""
msgstr "Înregistrarea a dispărut!"
msgid "Edited version already exists - overwrite?"
msgstr ""
msgstr "Deja există o versiune editată - o suprascriu?"
msgid "Error while queueing recording for cutting!"
msgstr ""
msgstr "Eroare la punerea în coada pentru tăiere!"
msgid "Delete editing marks for this recording?"
msgstr ""
msgstr "Șterg marcajele de editare pentru această înregistrare?"
msgid "Error while deleting editing marks!"
msgstr ""
msgstr "Eroare la ștergerea marcajelor de editare!"
msgid "Error while changing priority/lifetime!"
msgstr ""
msgstr "Eroare la schimbarea priorității/timpului de păstrare!"
msgid "Error while changing folder/name!"
msgstr ""
msgstr "Eroare la schimbarea directorului/numelui!"
msgid "Recording info"
msgstr "Detaliile înregistrării"
@ -826,7 +829,7 @@ msgid "Delete recording?"
msgstr "Şterg înregistrarea?"
msgid "Recording is being edited - really delete?"
msgstr "Montajul înregistrării e în curs de desfășurare - șterg totuși?"
msgstr "Editarea înregistrării e în curs de desfășurare - șterg totuși?"
msgid "Error while deleting recording!"
msgstr "Eroare la ştergerea înregistrării!"
@ -1075,31 +1078,31 @@ msgid "Setup.LNB$own"
msgstr "propriu"
msgid "Setup.LNB$Use dish positioner"
msgstr ""
msgstr "Folosește actuator de poziționare"
msgid "Setup.LNB$Site latitude (degrees)"
msgstr ""
msgstr "Latitudinea locului (grade)"
msgid "South"
msgstr ""
msgstr "Sud"
msgid "North"
msgstr ""
msgstr "Nord"
msgid "Setup.LNB$Site longitude (degrees)"
msgstr ""
msgstr "Longitudinea locului (grade)"
msgid "West"
msgstr ""
msgstr "Vest"
msgid "East"
msgstr ""
msgstr "Est"
msgid "Setup.LNB$Max. positioner swing (degrees)"
msgstr ""
msgstr "Unghi maxim al actuatorului (grade)"
msgid "Setup.LNB$Positioner speed (degrees/s)"
msgstr ""
msgstr "Viteza actuatorului (grade/s)"
msgid "CAM reset"
msgstr "Resetare CAM"
@ -1110,9 +1113,19 @@ msgstr "CAM prezent"
msgid "CAM ready"
msgstr "CAM pregătit"
#. TRANSLATORS: note the leading blank!
msgid " (activating)"
msgstr ""
msgid "CAM"
msgstr "CAM"
msgid "Button$Cancel activation"
msgstr ""
msgid "Button$Activate"
msgstr ""
msgid "Button$Menu"
msgstr "Meniu"
@ -1125,6 +1138,9 @@ msgstr "Deschid meniul CAM..."
msgid "Can't open CAM menu!"
msgstr "Nu pot deschide meniul CAM"
msgid "Can't activate CAM!"
msgstr ""
msgid "CAM is in use - really reset?"
msgstr "CAM-ul este in folosinţă - totuşi resetez?"
@ -1195,7 +1211,7 @@ msgid "Setup.Recording$Max. video file size (MB)"
msgstr "Dimensiune maximă a fişierului video (MB)"
msgid "Setup.Recording$Split edited files"
msgstr "Separare fişiere montate"
msgstr "Separare fişiere editate"
msgid "Setup.Recording$Delete timeshift recording"
msgstr "Şterge înregistrarea pentru vizionare decalată"
@ -1216,7 +1232,22 @@ msgid "Setup.Replay$Progress display time (s)"
msgstr "Durata afișării indicatorului de progres (s) "
msgid "Setup.Replay$Pause replay when setting mark"
msgstr "Pauză la punerea marcajului de montaj"
msgstr "Pauză la punerea marcajului de editare"
msgid "Setup.Replay$Pause replay when jumping to a mark"
msgstr ""
msgid "Setup.Replay$Skip edited parts"
msgstr ""
msgid "Setup.Replay$Pause replay at last mark"
msgstr ""
msgid "Setup.Replay$Binary skip initial value (s)"
msgstr ""
msgid "Setup.Replay$Binary skip timeout (s)"
msgstr ""
msgid "Setup.Replay$Resume ID"
msgstr "Identificator continuare"
@ -1255,10 +1286,10 @@ msgid "Setup.Miscellaneous$Initial volume"
msgstr "Volumul la pornire"
msgid "Setup.Miscellaneous$Volume steps"
msgstr ""
msgstr "Numărul de pași ai reglajului de volum"
msgid "Setup.Miscellaneous$Volume linearize"
msgstr ""
msgstr "Liniarizează caracteristica de volum"
msgid "Setup.Miscellaneous$Channels wrap"
msgstr "Lista de canale în buclă"
@ -1306,13 +1337,13 @@ msgstr "Continuă redarea"
#. TRANSLATORS: note the leading blank!
msgid " Cancel editing"
msgstr " Opreşte montajul înregistrării"
msgstr " Anulează editarea înregistrării"
msgid "Stop recording?"
msgstr "Opresc înregistrarea?"
msgid "Cancel editing?"
msgstr "Opresc montajul înregistrării?"
msgstr "Anulez editarea înregistrării?"
msgid "No audio available!"
msgstr "Lipseşte sunetul!"
@ -1340,19 +1371,19 @@ msgid "Jump: "
msgstr "Salt la: "
msgid "No editing marks defined!"
msgstr "Nu s-au pus marcaje de montaj pentru această înregistrare"
msgstr "Nu s-au pus marcaje de editare pentru această înregistrare"
msgid "No editing sequences defined!"
msgstr "Nu s-au definit secvențe pentru montaj!"
msgstr "Nu s-au definit secvențe pentru editare!"
msgid "Can't start editing process!"
msgstr "Nu pot porni montajul înregistrării!"
msgstr "Nu pot porni editarea înregistrării!"
msgid "Editing process started"
msgstr "Montajul înregistrării a început"
msgstr "Editarea înregistrării a început"
msgid "Editing process already active!"
msgstr "Montajul înregistrării este deja activ!"
msgstr "Editarea înregistrării este deja activă!"
msgid "FileNameChars$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
msgstr " aăâbcdefghiîjklmnopqrsştţuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
@ -1394,7 +1425,7 @@ msgid "Can't shutdown - option '-s' not given!"
msgstr "Nu pot închide - vezi opţiunea '-s'"
msgid "Editing - shut down anyway?"
msgstr "Montajul tocmai se efectuează - închid, totuşi?"
msgstr "Editarea tocmai se efectuează - închid, totuşi?"
msgid "Recording - shut down anyway?"
msgstr "Tocmai se înregistrează - închid, totuşi?"
@ -1411,7 +1442,7 @@ msgid "Plugin %s wakes up in %ld min, continue?"
msgstr "Plugin-ul %s se va trezi +n %ld min, continui?"
msgid "Editing - restart anyway?"
msgstr "Montajul tocmai se efectuează - repornesc, totuşi?"
msgstr "Editarea tocmai se efectuează - repornesc, totuşi?"
msgid "Recording - restart anyway?"
msgstr "Tocmai se înregistrează - repornesc, totuşi?"
@ -1446,7 +1477,7 @@ msgstr "REDARE"
#, c-format
msgid "Moving dish to %.1f..."
msgstr ""
msgstr "Rotesc antena la %.1f..."
msgid "ST:TNG Panels"
msgstr "Cons. ST:TNG"
@ -1499,10 +1530,10 @@ msgid "Switching primary DVB..."
msgstr "Comut dispozitiv DVB primar..."
msgid "Editing process failed!"
msgstr "Montajul înregistrării a eşuat"
msgstr "Editarea înregistrării a eşuat"
msgid "Editing process finished"
msgstr "Montajul înregistrării s-a terminat"
msgstr "Editarea înregistrării s-a încheiat"
msgid "Press any key to cancel restart"
msgstr "Apăsaţi orice tastă pentru a anula repornirea"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 2.0.0\n"
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
"POT-Creation-Date: 2015-01-12 15:40+0100\n"
"POT-Creation-Date: 2015-01-30 13:14+0100\n"
"PO-Revision-Date: 2013-03-10 17:13+0100\n"
"Last-Translator: Oleg Roitburd <oroitburd@gmail.com>\n"
"Language-Team: Russian <vdr@linuxtv.org>\n"
@ -20,6 +20,9 @@ msgstr ""
msgid "*** Invalid Channel ***"
msgstr "*** ½ÕßàÐÒØÛìÝëÙ ÚÐÝÐÛ ***"
msgid "CAM activated!"
msgstr ""
msgid "Channel not available!"
msgstr "ºÐÝÐÛ ÝÕÔÞáâãßÕÝ!"
@ -1109,9 +1112,19 @@ msgstr "CAM
msgid "CAM ready"
msgstr "CAM ÓÞâÞÒ"
#. TRANSLATORS: note the leading blank!
msgid " (activating)"
msgstr ""
msgid "CAM"
msgstr "ÃáÛÞÒÝëÙ ÔÞáâãß"
msgid "Button$Cancel activation"
msgstr ""
msgid "Button$Activate"
msgstr ""
msgid "Button$Menu"
msgstr "¼ÕÝî"
@ -1124,6 +1137,9 @@ msgstr "
msgid "Can't open CAM menu!"
msgstr "¼ÕÝî CAM-ÜÞÔãÛï ÝÕÔÞáâãßÝÞ!"
msgid "Can't activate CAM!"
msgstr ""
msgid "CAM is in use - really reset?"
msgstr "CAM ØáßÞÛì×ãÕâáï - ÔÕÙáâÒØâÕÛìÝÞ ßÕàÕÓàã×Øâì?"
@ -1217,6 +1233,21 @@ msgstr "
msgid "Setup.Replay$Pause replay when setting mark"
msgstr "¿Ðã×Ð ßàØ ãáâÐÝÞÒÚÕ ÜÐàÚØàÞÒÚØ"
msgid "Setup.Replay$Pause replay when jumping to a mark"
msgstr ""
msgid "Setup.Replay$Skip edited parts"
msgstr ""
msgid "Setup.Replay$Pause replay at last mark"
msgstr ""
msgid "Setup.Replay$Binary skip initial value (s)"
msgstr ""
msgid "Setup.Replay$Binary skip timeout (s)"
msgstr ""
msgid "Setup.Replay$Resume ID"
msgstr "ID ÒÞáßàÞØ×ÒÕÔÕÝØï"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 2.0.0\n"
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
"POT-Creation-Date: 2015-01-12 15:40+0100\n"
"POT-Creation-Date: 2015-01-30 13:14+0100\n"
"PO-Revision-Date: 2013-03-04 21:24+0100\n"
"Last-Translator: Milan Hrala <hrala.milan@gmail.com>\n"
"Language-Team: Slovak <vdr@linuxtv.org>\n"
@ -19,6 +19,9 @@ msgstr ""
msgid "*** Invalid Channel ***"
msgstr "*** Neplatný kanál ***"
msgid "CAM activated!"
msgstr ""
msgid "Channel not available!"
msgstr "Kanál nie je dostupný!"
@ -1108,9 +1111,19 @@ msgstr "CAM pr
msgid "CAM ready"
msgstr "CAM pripravený"
#. TRANSLATORS: note the leading blank!
msgid " (activating)"
msgstr ""
msgid "CAM"
msgstr "CAM (modul podmieneného prístupu)"
msgid "Button$Cancel activation"
msgstr ""
msgid "Button$Activate"
msgstr ""
msgid "Button$Menu"
msgstr "Menu"
@ -1123,6 +1136,9 @@ msgstr "Otv
msgid "Can't open CAM menu!"
msgstr "Menu CAM nie je dostupné"
msgid "Can't activate CAM!"
msgstr ""
msgid "CAM is in use - really reset?"
msgstr "CAM sa pou¾íva - naozaj re¹tartova»?"
@ -1216,6 +1232,21 @@ msgstr "Doba zobrazenia ukazovate
msgid "Setup.Replay$Pause replay when setting mark"
msgstr "Pozastavi» prehrávanie pri stanovení znaèky"
msgid "Setup.Replay$Pause replay when jumping to a mark"
msgstr ""
msgid "Setup.Replay$Skip edited parts"
msgstr ""
msgid "Setup.Replay$Pause replay at last mark"
msgstr ""
msgid "Setup.Replay$Binary skip initial value (s)"
msgstr ""
msgid "Setup.Replay$Binary skip timeout (s)"
msgstr ""
msgid "Setup.Replay$Resume ID"
msgstr "ident. èíslo obnovenia prehrávania"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 2.0.0\n"
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
"POT-Creation-Date: 2015-01-12 15:40+0100\n"
"POT-Creation-Date: 2015-01-30 13:14+0100\n"
"PO-Revision-Date: 2013-03-04 12:46+0100\n"
"Last-Translator: Matjaz Thaler <matjaz.thaler@guest.arnes.si>\n"
"Language-Team: Slovenian <vdr@linuxtv.org>\n"
@ -20,6 +20,9 @@ msgstr ""
msgid "*** Invalid Channel ***"
msgstr "*** Neznan kanal ***"
msgid "CAM activated!"
msgstr ""
msgid "Channel not available!"
msgstr "Kanal ni razpolo¾ljiv!"
@ -1109,9 +1112,19 @@ msgstr "CAM prisoten"
msgid "CAM ready"
msgstr "CAM pripravljen"
#. TRANSLATORS: note the leading blank!
msgid " (activating)"
msgstr ""
msgid "CAM"
msgstr "CAM"
msgid "Button$Cancel activation"
msgstr ""
msgid "Button$Activate"
msgstr ""
msgid "Button$Menu"
msgstr "Meni"
@ -1124,6 +1137,9 @@ msgstr "Odpiram CAM meni..."
msgid "Can't open CAM menu!"
msgstr "Ne morem odpreti CAM menija!"
msgid "Can't activate CAM!"
msgstr ""
msgid "CAM is in use - really reset?"
msgstr "CAM je v uporabi - zares resetiraj?"
@ -1217,6 +1233,21 @@ msgstr "Progresivni
msgid "Setup.Replay$Pause replay when setting mark"
msgstr "Pavza predvajanja pri postavitvi zanèke"
msgid "Setup.Replay$Pause replay when jumping to a mark"
msgstr ""
msgid "Setup.Replay$Skip edited parts"
msgstr ""
msgid "Setup.Replay$Pause replay at last mark"
msgstr ""
msgid "Setup.Replay$Binary skip initial value (s)"
msgstr ""
msgid "Setup.Replay$Binary skip timeout (s)"
msgstr ""
msgid "Setup.Replay$Resume ID"
msgstr "ID za predvajanje"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 2.0.0\n"
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
"POT-Creation-Date: 2015-01-12 15:40+0100\n"
"POT-Creation-Date: 2015-01-30 13:14+0100\n"
"PO-Revision-Date: 2013-03-16 15:05+0100\n"
"Last-Translator: Zoran Turalija <zoran.turalija@gmail.com>\n"
"Language-Team: Serbian <vdr@linuxtv.org>\n"
@ -20,6 +20,9 @@ msgstr ""
msgid "*** Invalid Channel ***"
msgstr "*** Neispravan Kanal ***"
msgid "CAM activated!"
msgstr ""
msgid "Channel not available!"
msgstr "Kanal nije dostupan!"
@ -1109,9 +1112,19 @@ msgstr "CAM prisutan"
msgid "CAM ready"
msgstr "CAM spreman"
#. TRANSLATORS: note the leading blank!
msgid " (activating)"
msgstr ""
msgid "CAM"
msgstr "CAM"
msgid "Button$Cancel activation"
msgstr ""
msgid "Button$Activate"
msgstr ""
msgid "Button$Menu"
msgstr "Meni"
@ -1124,6 +1137,9 @@ msgstr "Otvaram CAM meni..."
msgid "Can't open CAM menu!"
msgstr "Otvaranje CAM menija neuspe¹no!"
msgid "Can't activate CAM!"
msgstr ""
msgid "CAM is in use - really reset?"
msgstr "CAM u upotrebi - stvarno ponovno pokrenuti?"
@ -1217,6 +1233,21 @@ msgstr "Trajanje prikazivanja progresa (s)"
msgid "Setup.Replay$Pause replay when setting mark"
msgstr "Pauziraj reprodukciju prilikom obele¾avanja"
msgid "Setup.Replay$Pause replay when jumping to a mark"
msgstr ""
msgid "Setup.Replay$Skip edited parts"
msgstr ""
msgid "Setup.Replay$Pause replay at last mark"
msgstr ""
msgid "Setup.Replay$Binary skip initial value (s)"
msgstr ""
msgid "Setup.Replay$Binary skip timeout (s)"
msgstr ""
msgid "Setup.Replay$Resume ID"
msgstr "ID reprodukcije"

View File

@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 2.0.0\n"
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
"POT-Creation-Date: 2015-01-12 15:40+0100\n"
"POT-Creation-Date: 2015-01-30 13:14+0100\n"
"PO-Revision-Date: 2013-02-18 17:04+0100\n"
"Last-Translator: Richard Lithvall <r-vdr@boomer.se>\n"
"Language-Team: Swedish <vdr@linuxtv.org>\n"
@ -23,6 +23,9 @@ msgstr ""
msgid "*** Invalid Channel ***"
msgstr "*** Felaktig kanal ***"
msgid "CAM activated!"
msgstr ""
msgid "Channel not available!"
msgstr "Kanalen är inte tillgänglig!"
@ -1112,9 +1115,19 @@ msgstr "CAM n
msgid "CAM ready"
msgstr "CAM klar"
#. TRANSLATORS: note the leading blank!
msgid " (activating)"
msgstr ""
msgid "CAM"
msgstr "CAM"
msgid "Button$Cancel activation"
msgstr ""
msgid "Button$Activate"
msgstr ""
msgid "Button$Menu"
msgstr "Meny"
@ -1127,6 +1140,9 @@ msgstr "
msgid "Can't open CAM menu!"
msgstr "Det går inte att öppna CAM menyn!"
msgid "Can't activate CAM!"
msgstr ""
msgid "CAM is in use - really reset?"
msgstr "CAM upptagen, vill du verkligen återställa?"
@ -1220,6 +1236,21 @@ msgstr "Tid f
msgid "Setup.Replay$Pause replay when setting mark"
msgstr "Pausa uppspelningen vid sättande av redigeringsmärke"
msgid "Setup.Replay$Pause replay when jumping to a mark"
msgstr ""
msgid "Setup.Replay$Skip edited parts"
msgstr ""
msgid "Setup.Replay$Pause replay at last mark"
msgstr ""
msgid "Setup.Replay$Binary skip initial value (s)"
msgstr ""
msgid "Setup.Replay$Binary skip timeout (s)"
msgstr ""
msgid "Setup.Replay$Resume ID"
msgstr "Återupptagnings-ID"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 2.0.0\n"
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
"POT-Creation-Date: 2015-01-12 15:40+0100\n"
"POT-Creation-Date: 2015-01-30 13:14+0100\n"
"PO-Revision-Date: 2008-02-28 00:33+0100\n"
"Last-Translator: Oktay Yolgeçen <oktay_73@yahoo.de>\n"
"Language-Team: Turkish <vdr@linuxtv.org>\n"
@ -19,6 +19,9 @@ msgstr ""
msgid "*** Invalid Channel ***"
msgstr "*** Geçersiz kanal ***"
msgid "CAM activated!"
msgstr ""
msgid "Channel not available!"
msgstr "Kanal kullanýlamýyor!"
@ -1108,9 +1111,19 @@ msgstr "CAM mevcut"
msgid "CAM ready"
msgstr "CAM hazýr"
#. TRANSLATORS: note the leading blank!
msgid " (activating)"
msgstr ""
msgid "CAM"
msgstr "CAM"
msgid "Button$Cancel activation"
msgstr ""
msgid "Button$Activate"
msgstr ""
msgid "Button$Menu"
msgstr "Menü"
@ -1123,6 +1136,9 @@ msgstr "CAM men
msgid "Can't open CAM menu!"
msgstr "CAM menüsü açýlamýyor!"
msgid "Can't activate CAM!"
msgstr ""
msgid "CAM is in use - really reset?"
msgstr "CAM kullanýlýyor - gerçekden sýfýrla?"
@ -1216,6 +1232,21 @@ msgstr ""
msgid "Setup.Replay$Pause replay when setting mark"
msgstr ""
msgid "Setup.Replay$Pause replay when jumping to a mark"
msgstr ""
msgid "Setup.Replay$Skip edited parts"
msgstr ""
msgid "Setup.Replay$Pause replay at last mark"
msgstr ""
msgid "Setup.Replay$Binary skip initial value (s)"
msgstr ""
msgid "Setup.Replay$Binary skip timeout (s)"
msgstr ""
msgid "Setup.Replay$Resume ID"
msgstr "Gösteriþ ID'si"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 2.0.0\n"
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
"POT-Creation-Date: 2015-01-12 15:40+0100\n"
"POT-Creation-Date: 2015-01-30 13:14+0100\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"
@ -20,6 +20,9 @@ msgstr ""
msgid "*** Invalid Channel ***"
msgstr "*** Неправильний канал ***"
msgid "CAM activated!"
msgstr ""
msgid "Channel not available!"
msgstr "Канал недоступний!"
@ -1109,9 +1112,19 @@ msgstr "CAM присутній"
msgid "CAM ready"
msgstr "CAM готовий"
#. TRANSLATORS: note the leading blank!
msgid " (activating)"
msgstr ""
msgid "CAM"
msgstr "CAM (Умовний доступ)"
msgid "Button$Cancel activation"
msgstr ""
msgid "Button$Activate"
msgstr ""
msgid "Button$Menu"
msgstr "Меню"
@ -1124,6 +1137,9 @@ msgstr "Відкривання меню CAM-модуля..."
msgid "Can't open CAM menu!"
msgstr "Меню CAM-модуля недоступне!"
msgid "Can't activate CAM!"
msgstr ""
msgid "CAM is in use - really reset?"
msgstr "CAM використовується - дійсно перезапустити?"
@ -1217,6 +1233,21 @@ msgstr "Час показу індикатора (с)"
msgid "Setup.Replay$Pause replay when setting mark"
msgstr "Пауза програвання при встановленні мітки"
msgid "Setup.Replay$Pause replay when jumping to a mark"
msgstr ""
msgid "Setup.Replay$Skip edited parts"
msgstr ""
msgid "Setup.Replay$Pause replay at last mark"
msgstr ""
msgid "Setup.Replay$Binary skip initial value (s)"
msgstr ""
msgid "Setup.Replay$Binary skip timeout (s)"
msgstr ""
msgid "Setup.Replay$Resume ID"
msgstr "ID продовження"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: VDR 2.0.0\n"
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
"POT-Creation-Date: 2015-01-12 15:40+0100\n"
"POT-Creation-Date: 2015-01-30 13:14+0100\n"
"PO-Revision-Date: 2013-03-04 14:52+0800\n"
"Last-Translator: NFVDR <nfvdr@live.com>\n"
"Language-Team: Chinese (simplified) <nfvdr@live.com>\n"
@ -21,6 +21,9 @@ msgstr ""
msgid "*** Invalid Channel ***"
msgstr "***无效的频道 ***"
msgid "CAM activated!"
msgstr ""
msgid "Channel not available!"
msgstr "频道不可用!"
@ -1110,9 +1113,19 @@ msgstr "存在的CAM"
msgid "CAM ready"
msgstr "CAM准备"
#. TRANSLATORS: note the leading blank!
msgid " (activating)"
msgstr ""
msgid "CAM"
msgstr "CAM设置"
msgid "Button$Cancel activation"
msgstr ""
msgid "Button$Activate"
msgstr ""
msgid "Button$Menu"
msgstr "菜单"
@ -1125,6 +1138,9 @@ msgstr "打开CAM菜单..."
msgid "Can't open CAM menu!"
msgstr "不能打开CAM菜单"
msgid "Can't activate CAM!"
msgstr ""
msgid "CAM is in use - really reset?"
msgstr "CAM正在使用-是否重启?"
@ -1218,6 +1234,21 @@ msgstr "处理显示时间(s)"
msgid "Setup.Replay$Pause replay when setting mark"
msgstr "暂停回放时,设置标志"
msgid "Setup.Replay$Pause replay when jumping to a mark"
msgstr ""
msgid "Setup.Replay$Skip edited parts"
msgstr ""
msgid "Setup.Replay$Pause replay at last mark"
msgstr ""
msgid "Setup.Replay$Binary skip initial value (s)"
msgstr ""
msgid "Setup.Replay$Binary skip timeout (s)"
msgstr ""
msgid "Setup.Replay$Resume ID"
msgstr "恢复 ID"

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: recording.c 3.21 2015/01/17 14:52:28 kls Exp $
* $Id: recording.c 3.24 2015/01/25 15:39:24 kls Exp $
*/
#include "recording.h"
@ -1749,7 +1749,7 @@ void cDirCopier::Action(void)
off_t FileSizeSrc = FileSize(FileNameSrc);
off_t FileSizeDst = FileSize(FileNameDst);
if (FileSizeSrc != FileSizeDst) {
esyslog("ERROR: file size discrepancy: %"PRId64" != %"PRId64, FileSizeSrc, FileSizeDst);
esyslog("ERROR: file size discrepancy: %" PRId64 " != %" PRId64, FileSizeSrc, FileSizeDst);
break;
}
}
@ -2072,7 +2072,7 @@ bool cMarks::Load(const char *RecordingFileName, double FramesPerSecond, bool Is
bool cMarks::Update(void)
{
time_t t = time(NULL);
if (t > nextUpdate) {
if (t > nextUpdate && *fileName) {
time_t LastModified = LastModifiedTime(fileName);
if (LastModified != lastFileTime) // change detected, or first run
lastChange = LastModified > 0 ? LastModified : t;
@ -2476,7 +2476,7 @@ cIndexFile::cIndexFile(const char *FileName, bool Record, bool IsPesRecording, b
delta = int(buf.st_size % sizeof(tIndexTs));
if (delta) {
delta = sizeof(tIndexTs) - delta;
esyslog("ERROR: invalid file size (%"PRId64") in '%s'", buf.st_size, *fileName);
esyslog("ERROR: invalid file size (%" PRId64 ") in '%s'", buf.st_size, *fileName);
}
last = int((buf.st_size + delta) / sizeof(tIndexTs) - 1);
if ((!Record || Update) && last >= 0) {
@ -2741,7 +2741,7 @@ int cIndexFile::Get(uint16_t FileNumber, off_t FileOffset)
return -1;
}
bool cIndexFile::IsStillRecording()
bool cIndexFile::IsStillRecording(void)
{
return f >= 0;
}

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: recording.h 3.5 2015/01/17 14:33:05 kls Exp $
* $Id: recording.h 3.6 2015/01/31 13:34:44 kls Exp $
*/
#ifndef __RECORDING_H
@ -117,7 +117,6 @@ private:
static char *StripEpisodeName(char *s, bool Strip);
char *SortName(void) const;
void ClearSortName(void);
int GetResume(void) const;
time_t start;
int priority;
int lifetime;
@ -160,6 +159,9 @@ public:
int FileSizeMB(void) const;
///< Returns the total file size of this recording (in MB), or -1 if the file
///< size is unknown.
int GetResume(void) const;
///< Returns the index of the frame where replay of this recording shall
///< be resumed, or -1 in case of an error.
bool IsNew(void) const { return GetResume() <= 0; }
bool IsEdited(void) const;
bool IsPesRecording(void) const { return isPesRecording; }

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: remote.c 3.2 2014/02/15 12:40:39 kls Exp $
* $Id: remote.c 3.3 2015/01/20 14:53:57 kls Exp $
*/
#include "remote.h"
@ -124,7 +124,7 @@ bool cRemote::PutMacro(eKeys Key)
bool cRemote::Put(uint64_t Code, bool Repeat, bool Release)
{
char buffer[32];
snprintf(buffer, sizeof(buffer), "%016"PRIX64, Code);
snprintf(buffer, sizeof(buffer), "%016" PRIX64, Code);
return Put(buffer, Repeat, Release);
}

View File

@ -14,11 +14,17 @@
#
# Examples:
# 0 1284
# 1 1400
# 2 1516
# 3 1632
# 4 1748
# 5 1864
# 6 1980
# 7 2096
# EN50494 & EN50607 ("JESS")
# 0 974
# 1 1076
# 2 1178
# 3 1280
# 4 1382
# 5 1484
# 6 1586
# 7 1688
# EN50607 ("JESS") only
# 8 1790
# 9 1892
# 10 1994
# 11 2096

4
vdr.1
View File

@ -8,7 +8,7 @@
.\" License as specified in the file COPYING that comes with the
.\" vdr distribution.
.\"
.\" $Id: vdr.1 3.3 2015/01/17 14:46:22 kls Exp $
.\" $Id: vdr.1 3.4 2015/01/20 15:34:29 kls Exp $
.\"
.TH vdr 1 "31 Mar 2013" "2.0" "Video Disk Recorder"
.SH NAME
@ -299,7 +299,7 @@ also be read at program startup to have the full EPG data available immediately.
If this file is present in the video directory, its last modification time will
be used to trigger an update of the list of recordings in the "Recordings" menu.
.SH SEE ALSO
.BR vdr (5), svdrp(1)
.BR vdr (5), svdrpsend (1)
.SH AUTHOR
Written by Klaus Schmidinger, with contributions from many others.
See the file \fICONTRIBUTORS\fR in the \fBvdr\fR source distribution.