mirror of
https://github.com/vdr-projects/vdr.git
synced 2025-03-01 10:50:46 +00:00
Version 1.7.8
- The name of the function cDevice::GetVideoSize() wasn't very well chosen for its purpose of defining the optimum size of the OSD for the current output device. Therefore a new function named cDevice::GetOsdSize() has been introduced (suggested by Rolf Ahrenberg). Plugin authors should implement this function in classes derived from cDevice, if they are able to replay video. cDevice::GetVideoSize() still exists and should return the actual size of the video material that is currently replayed. Note that because of the many possible aspect ratios for video material, the type of the Aspect parameter of GetVideoSize() has been changed to 'double', and the Aspect parameter in both functions is named differently, because it returns different values (suggested by Reinhard Nissl). Thanks to Oliver Endriss for his input on calculating the Aspect factor in GetOsdSize(). - Fixed the way the OSD size is determined on full featured DVB cards (thanks to Oliver Endriss). - Increased MAXOSDHEIGHT to 1200 (suggested by Nicolas Huillard). - Removed limitation to PAL resolution from SPU handling. - Checking fd_video in cDvbDevice::GetVideoSize() to avoid error messages on systems with no real primary replay device (reported by Martin Neuditschko). - Added a note to cTsToPes::GetPes() about having to call it repeatedly, once it has returned a non-NULL value. - Added MPEG 1 handling to remux.c (thanks to Ales Jurik). - Fixed use of time_t in cEIT::cEIT() (thanks to Tobias Bratfisch). - Added missing update of lastOsdSizeUpdate. - EIT events are now only processed if a plausible system time is available, to avoid wrong handling of PDC descriptors (thanks to Tobias Bratfisch). - Removed unused 'synced' member from cTsToPes (reported by Christoph Haubrich). - Added a note to cTsToPes about all TS packets having to belong to the same PID, and that for video data GetPes() may only be called if the next TS packet that will be given to PutTs() has the "payload start" flag set (suggested by Christoph Haubrich). - Added a note about the meaning of PERCENTAGEDELTA in cRingBuffer::UpdatePercentage() (thanks to Rolf Ahrenberg). - The new setup option "Recording/Pause key handling" can be used to define what happens if the Pause key on the remote control is pressed during live tv (thanks to Timo Eskola). - Added a note about cFont::GetFont() not being thread-safe. - Fixed generating PAT/PMT version numbers in case the PIDs change during recording (reported by Reinhard Nissl). - Updated the Ukrainian OSD texts (thanks to Yarema Aka Knedlyk). - Fixed a memory leak when reaching the end of a recording during replay (reported by Reinhard Nissl). - Fixed calling close(-1) in cUnbufferedFile::Close() (reported by Reinhard Nissl). - Added a workaround for the broken linux-dvb driver header files (based on a patch from Tobias Grimm). - Fixed handling the length of DiSEqC command sequences (reported by Reinhard Nissl). - Fixed cOsdMenu::Display() in case the menu size has changed (thanks to Reinhard Nissl). - Added some missing 'const' keywords to avoid compilation errors with gcc 4.4 (thanks to Ville Skyttä and Ludwig Nussel). - Modified cSVDRP::CmdGRAB() to avoid writing into const data (reported by Ludwig Nussel). - Fixed calculating menu colum widths in case the font has a size other than the default size (reported by Reinhard Nissl). - Added a plausibility check for the OSD percentage parameters to avoid problems in case the values are stored in the setup.conf file in a wrong way. - Fixed variable types in cIndexFile (reported by Udo Richter).
This commit is contained in:
parent
991eda0067
commit
ab6f2ccf42
32
CONTRIBUTORS
32
CONTRIBUTORS
@ -672,6 +672,8 @@ Oliver Endriss <o.endriss@gmx.de>
|
|||||||
VPID is 0
|
VPID is 0
|
||||||
for reporting chirping sound disturbences at editing points in TS recordings
|
for reporting chirping sound disturbences at editing points in TS recordings
|
||||||
for reporting broken index generation in TS recordings after a buffer overflow
|
for reporting broken index generation in TS recordings after a buffer overflow
|
||||||
|
for fixing the way the OSD size is determined on full featured DVB cards
|
||||||
|
for his input on calculating the Aspect factor in GetOsdSize()
|
||||||
|
|
||||||
Reinhard Walter Buchner <rw.buchner@freenet.de>
|
Reinhard Walter Buchner <rw.buchner@freenet.de>
|
||||||
for adding some satellites to 'sources.conf'
|
for adding some satellites to 'sources.conf'
|
||||||
@ -918,6 +920,8 @@ Ludwig Nussel <ludwig.nussel@web.de>
|
|||||||
for a hint on using _nl_msg_cat_cntr
|
for a hint on using _nl_msg_cat_cntr
|
||||||
for adding some missing 'const' keywords
|
for adding some missing 'const' keywords
|
||||||
for pointing out that "%016llX" should be used instead of "%016LX"
|
for pointing out that "%016llX" should be used instead of "%016LX"
|
||||||
|
for adding some missing 'const' keywords to avoid compilation errors with gcc 4.4
|
||||||
|
for reporting that cSVDRP::CmdGRAB() writes into const data
|
||||||
|
|
||||||
Thomas Koch <tom@harhar.net>
|
Thomas Koch <tom@harhar.net>
|
||||||
for his support in keeping the Premiere World channels up to date in 'channels.conf'
|
for his support in keeping the Premiere World channels up to date in 'channels.conf'
|
||||||
@ -1073,6 +1077,8 @@ Rolf Ahrenberg <rahrenbe@cc.hut.fi>
|
|||||||
for replacing the Finnish language code "smi" with "suo"
|
for replacing the Finnish language code "smi" with "suo"
|
||||||
for adding cap_sys_nice to the capabilities that are not dropped
|
for adding cap_sys_nice to the capabilities that are not dropped
|
||||||
for adding cThread::SetIOPriority() and using it in cRemoveDeletedRecordingsThread
|
for adding cThread::SetIOPriority() and using it in cRemoveDeletedRecordingsThread
|
||||||
|
for suggesting to introduce cDevice::GetOsdSize()
|
||||||
|
for adding a note about the meaning of PERCENTAGEDELTA in cRingBuffer::UpdatePercentage()
|
||||||
|
|
||||||
Ralf Klueber <ralf.klueber@vodafone.com>
|
Ralf Klueber <ralf.klueber@vodafone.com>
|
||||||
for reporting a bug in cutting a recording if there is only a single editing mark
|
for reporting a bug in cutting a recording if there is only a single editing mark
|
||||||
@ -1212,6 +1218,17 @@ Reinhard Nissl <rnissl@gmx.de>
|
|||||||
for making sure vdr-xine no longer needs cDvbPlayer::Action() to call DeviceFlush()
|
for making sure vdr-xine no longer needs cDvbPlayer::Action() to call DeviceFlush()
|
||||||
for fixing the 'VideoOnly' condition in the PlayPes() and PlayTs() calls in
|
for fixing the 'VideoOnly' condition in the PlayPes() and PlayTs() calls in
|
||||||
cDvbPlayer::Action()
|
cDvbPlayer::Action()
|
||||||
|
for reporting a problem in case the PIDs change during recording
|
||||||
|
for reporting a memory leak when reaching the end of a recording during replay
|
||||||
|
for reporting a call to close(-1) in cUnbufferedFile::Close()
|
||||||
|
for reporting a possible problem in handling the length of DiSEqC command sequences
|
||||||
|
for fixing cOsdMenu::Display() in case the menu size has changed
|
||||||
|
for suggesting to change the type of the Aspect parameter of GetVideoSize()
|
||||||
|
to 'double'
|
||||||
|
for suggesting to use different names for the Aspect parameter in GetVideoSize()
|
||||||
|
and GetOsdSize()
|
||||||
|
for reporting a problem with calculating menu colum widths in case the font has a
|
||||||
|
size other than the default size
|
||||||
|
|
||||||
Richard Robson <richard_robson@beeb.net>
|
Richard Robson <richard_robson@beeb.net>
|
||||||
for reporting freezing replay if a timer starts while in Transfer Mode from the
|
for reporting freezing replay if a timer starts while in Transfer Mode from the
|
||||||
@ -1623,6 +1640,7 @@ Udo Richter <udo_richter@gmx.de>
|
|||||||
for reporting a problem with handling the maximum video file size
|
for reporting a problem with handling the maximum video file size
|
||||||
for suggesting to add a note to the INSTALL file about using subdirectories to
|
for suggesting to add a note to the INSTALL file about using subdirectories to
|
||||||
split a large disk into separate areas for VDR's video data and other stuff
|
split a large disk into separate areas for VDR's video data and other stuff
|
||||||
|
for reporting wrong variable types in cIndexFile
|
||||||
|
|
||||||
Sven Kreiensen <svenk@kammer.uni-hannover.de>
|
Sven Kreiensen <svenk@kammer.uni-hannover.de>
|
||||||
for his help in keeping 'channels.conf.terr' up to date
|
for his help in keeping 'channels.conf.terr' up to date
|
||||||
@ -1814,6 +1832,7 @@ Ville Skytt
|
|||||||
menu
|
menu
|
||||||
for adding missing #include <limits.h> to epg.c and menuitems.h
|
for adding missing #include <limits.h> to epg.c and menuitems.h
|
||||||
for fixing various spelling errors and improving PLUGINS.html
|
for fixing various spelling errors and improving PLUGINS.html
|
||||||
|
for adding some missing 'const' keywords to avoid compilation errors with gcc 4.4
|
||||||
|
|
||||||
Steffen Beyer <cpunk@reactor.de>
|
Steffen Beyer <cpunk@reactor.de>
|
||||||
for fixing setting the colored button help after deleting a recording in case the next
|
for fixing setting the colored button help after deleting a recording in case the next
|
||||||
@ -1953,6 +1972,7 @@ Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
|
|||||||
|
|
||||||
Nicolas Huillard <nhuillard@e-dition.fr>
|
Nicolas Huillard <nhuillard@e-dition.fr>
|
||||||
for translating OSD texts to the French language
|
for translating OSD texts to the French language
|
||||||
|
for suggesting to increase MAXOSDHEIGHT to 1200
|
||||||
|
|
||||||
Patrick Fischer <patrick_fischer@gmx.de>
|
Patrick Fischer <patrick_fischer@gmx.de>
|
||||||
for reporting an error in the cFilter example in PLUGINS.html
|
for reporting an error in the cFilter example in PLUGINS.html
|
||||||
@ -2126,6 +2146,9 @@ Christoph Haubrich <christoph1.haubrich@arcor.de>
|
|||||||
check to it
|
check to it
|
||||||
for changing cBitmap::DrawText() to always draw the background unless ColorBg
|
for changing cBitmap::DrawText() to always draw the background unless ColorBg
|
||||||
is clrTransparent
|
is clrTransparent
|
||||||
|
for reporting unused 'synced' member in cTsToPes
|
||||||
|
for suggesting to add a note to cTsToPes about all TS packets having to belong to
|
||||||
|
the same PID
|
||||||
|
|
||||||
Pekka Mauno <pekka.mauno@iki.fi>
|
Pekka Mauno <pekka.mauno@iki.fi>
|
||||||
for fixing cSchedule::GetFollowingEvent() in case there is currently no present
|
for fixing cSchedule::GetFollowingEvent() in case there is currently no present
|
||||||
@ -2164,6 +2187,7 @@ Tobias Grimm <tobias.grimm@e-tobi.net>
|
|||||||
for fixing a signed character used as index in cBase64Encoder::NextLine()
|
for fixing a signed character used as index in cBase64Encoder::NextLine()
|
||||||
for fixing formatting the name section in the VDR man pages
|
for fixing formatting the name section in the VDR man pages
|
||||||
for reporting unneeded include files <linux/dvb/dmx.h> und <time.h> in remux.h
|
for reporting unneeded include files <linux/dvb/dmx.h> und <time.h> in remux.h
|
||||||
|
for a patch that added a workaround for the broken linux-dvb driver header files
|
||||||
|
|
||||||
Helge Lenz <h.lenz@gmx.de>
|
Helge Lenz <h.lenz@gmx.de>
|
||||||
for reporting a bug in setting the 'Delta' parameter when calling the shutdown
|
for reporting a bug in setting the 'Delta' parameter when calling the shutdown
|
||||||
@ -2310,6 +2334,8 @@ Tobias Bratfisch <tobias@reel-multimedia.com>
|
|||||||
for optimizing cNitFilter::Process()
|
for optimizing cNitFilter::Process()
|
||||||
for reducing the number of time(NULL) calls in vdr.c's main loop to a single call
|
for reducing the number of time(NULL) calls in vdr.c's main loop to a single call
|
||||||
for improving efficiency of cEIT::cEIT()
|
for improving efficiency of cEIT::cEIT()
|
||||||
|
for fixing the use of time_t in cEIT::cEIT()
|
||||||
|
for making EIT events be processed only if a plausible system time is available
|
||||||
|
|
||||||
Bruno Roussel <bruno.roussel@free.fr>
|
Bruno Roussel <bruno.roussel@free.fr>
|
||||||
for translating OSD texts to the French language
|
for translating OSD texts to the French language
|
||||||
@ -2331,6 +2357,7 @@ Diego Pierotto <vdr-italian@tiscali.it>
|
|||||||
Timo Eskola <timo@tolleri.net>
|
Timo Eskola <timo@tolleri.net>
|
||||||
for implementing sending all frames to devices that can handle them in fast forward
|
for implementing sending all frames to devices that can handle them in fast forward
|
||||||
trick speeds
|
trick speeds
|
||||||
|
for implementing the setup option "Recording/Pause key handling"
|
||||||
|
|
||||||
Elias Luttinen <el@iki.fi>
|
Elias Luttinen <el@iki.fi>
|
||||||
for improving the description of where logging goes in the INSTALL file
|
for improving the description of where logging goes in the INSTALL file
|
||||||
@ -2394,6 +2421,7 @@ Sundararaj Reel <sundararaj.reel@googlemail.com>
|
|||||||
Ales Jurik <ajurik@quick.cz>
|
Ales Jurik <ajurik@quick.cz>
|
||||||
for reporting broken SI data on Czech/Slovak channels after changing the default
|
for reporting broken SI data on Czech/Slovak channels after changing the default
|
||||||
character set to ISO-8859-9
|
character set to ISO-8859-9
|
||||||
|
for adding MPEG 1 handling to remux.c
|
||||||
|
|
||||||
Magnus Andersson <svankan@bahnhof.se>
|
Magnus Andersson <svankan@bahnhof.se>
|
||||||
for translating OSD texts to the Swedish language
|
for translating OSD texts to the Swedish language
|
||||||
@ -2446,3 +2474,7 @@ Marcel Unbehaun <frostworks@gmx.de>
|
|||||||
|
|
||||||
Günter Niedermeier <linuxtv@ncs-online.de>
|
Günter Niedermeier <linuxtv@ncs-online.de>
|
||||||
for reporting a problem with file I/O overhead during recording in TS format
|
for reporting a problem with file I/O overhead during recording in TS format
|
||||||
|
|
||||||
|
Martin Neuditschko <yosuke.tomoe@gmx.net>
|
||||||
|
for reporting a problem with error messages from cDvbDevice::GetVideoSize()
|
||||||
|
on systems with no real primary replay device
|
||||||
|
61
HISTORY
61
HISTORY
@ -6074,3 +6074,64 @@ Video Disk Recorder Revision History
|
|||||||
(provided the output device implements the GetVideoSize() function).
|
(provided the output device implements the GetVideoSize() function).
|
||||||
- cFrameDetector::Analyze() now syncs on the TS packet sync bytes (thanks to
|
- cFrameDetector::Analyze() now syncs on the TS packet sync bytes (thanks to
|
||||||
Oliver Endriss for reporting broken index generation after a buffer overflow).
|
Oliver Endriss for reporting broken index generation after a buffer overflow).
|
||||||
|
|
||||||
|
2009-06-13: Version 1.7.8
|
||||||
|
|
||||||
|
- The name of the function cDevice::GetVideoSize() wasn't very well chosen
|
||||||
|
for its purpose of defining the optimum size of the OSD for the current
|
||||||
|
output device. Therefore a new function named cDevice::GetOsdSize() has
|
||||||
|
been introduced (suggested by Rolf Ahrenberg). Plugin authors should
|
||||||
|
implement this function in classes derived from cDevice, if they are able
|
||||||
|
to replay video. cDevice::GetVideoSize() still exists and should return the
|
||||||
|
actual size of the video material that is currently replayed. Note that
|
||||||
|
because of the many possible aspect ratios for video material, the type
|
||||||
|
of the Aspect parameter of GetVideoSize() has been changed to 'double',
|
||||||
|
and the Aspect parameter in both functions is named differently, because
|
||||||
|
it returns different values (suggested by Reinhard Nissl).
|
||||||
|
Thanks to Oliver Endriss for his input on calculating the Aspect factor in
|
||||||
|
GetOsdSize().
|
||||||
|
- Fixed the way the OSD size is determined on full featured DVB cards (thanks
|
||||||
|
to Oliver Endriss).
|
||||||
|
- Increased MAXOSDHEIGHT to 1200 (suggested by Nicolas Huillard).
|
||||||
|
- Removed limitation to PAL resolution from SPU handling.
|
||||||
|
- Checking fd_video in cDvbDevice::GetVideoSize() to avoid error messages on
|
||||||
|
systems with no real primary replay device (reported by Martin Neuditschko).
|
||||||
|
- Added a note to cTsToPes::GetPes() about having to call it repeatedly, once
|
||||||
|
it has returned a non-NULL value.
|
||||||
|
- Added MPEG 1 handling to remux.c (thanks to Ales Jurik).
|
||||||
|
- Fixed use of time_t in cEIT::cEIT() (thanks to Tobias Bratfisch).
|
||||||
|
- Added missing update of lastOsdSizeUpdate.
|
||||||
|
- EIT events are now only processed if a plausible system time is available, to
|
||||||
|
avoid wrong handling of PDC descriptors (thanks to Tobias Bratfisch).
|
||||||
|
- Removed unused 'synced' member from cTsToPes (reported by Christoph Haubrich).
|
||||||
|
- Added a note to cTsToPes about all TS packets having to belong to the same PID,
|
||||||
|
and that for video data GetPes() may only be called if the next TS packet that
|
||||||
|
will be given to PutTs() has the "payload start" flag set (suggested by Christoph
|
||||||
|
Haubrich).
|
||||||
|
- Added a note about the meaning of PERCENTAGEDELTA in cRingBuffer::UpdatePercentage()
|
||||||
|
(thanks to Rolf Ahrenberg).
|
||||||
|
- The new setup option "Recording/Pause key handling" can be used to define
|
||||||
|
what happens if the Pause key on the remote control is pressed during
|
||||||
|
live tv (thanks to Timo Eskola).
|
||||||
|
- Added a note about cFont::GetFont() not being thread-safe.
|
||||||
|
- Fixed generating PAT/PMT version numbers in case the PIDs change during
|
||||||
|
recording (reported by Reinhard Nissl).
|
||||||
|
- Updated the Ukrainian OSD texts (thanks to Yarema Aka Knedlyk).
|
||||||
|
- Fixed a memory leak when reaching the end of a recording during replay (reported
|
||||||
|
by Reinhard Nissl).
|
||||||
|
- Fixed calling close(-1) in cUnbufferedFile::Close() (reported by Reinhard Nissl).
|
||||||
|
- Added a workaround for the broken linux-dvb driver header files (based on a patch
|
||||||
|
from Tobias Grimm).
|
||||||
|
- Fixed handling the length of DiSEqC command sequences (reported by Reinhard Nissl).
|
||||||
|
- Fixed cOsdMenu::Display() in case the menu size has changed (thanks to
|
||||||
|
Reinhard Nissl).
|
||||||
|
- Added some missing 'const' keywords to avoid compilation errors with gcc 4.4
|
||||||
|
(thanks to Ville Skyttä and Ludwig Nussel).
|
||||||
|
- Modified cSVDRP::CmdGRAB() to avoid writing into const data (reported by
|
||||||
|
Ludwig Nussel).
|
||||||
|
- Fixed calculating menu colum widths in case the font has a size other than the
|
||||||
|
default size (reported by Reinhard Nissl).
|
||||||
|
- Added a plausibility check for the OSD percentage parameters
|
||||||
|
to avoid problems in case the values are stored in the setup.conf
|
||||||
|
file in a wrong way.
|
||||||
|
- Fixed variable types in cIndexFile (reported by Udo Richter).
|
||||||
|
7
MANUAL
7
MANUAL
@ -748,6 +748,13 @@ Version 1.6
|
|||||||
Pause priority = 10 The Priority and Lifetime values used when pausing live
|
Pause priority = 10 The Priority and Lifetime values used when pausing live
|
||||||
Pause lifetime = 1 video.
|
Pause lifetime = 1 video.
|
||||||
|
|
||||||
|
Pause key handling = 3 Defines what happens if the Pause key on the remote control
|
||||||
|
is pressed during live tv.
|
||||||
|
0 = do not pause live video
|
||||||
|
1 = confirm pause live video
|
||||||
|
2 = pause live video
|
||||||
|
The default is 2.
|
||||||
|
|
||||||
Use episode name = yes Repeating timers use the EPG's 'Episode name' information
|
Use episode name = yes Repeating timers use the EPG's 'Episode name' information
|
||||||
to create recording file names in a hierarchical structure
|
to create recording file names in a hierarchical structure
|
||||||
(for instance to gather all episodes of a series in a
|
(for instance to gather all episodes of a series in a
|
||||||
|
@ -1944,10 +1944,10 @@ In order to be able to determine the proper size of the OSD, the device
|
|||||||
should implement the function
|
should implement the function
|
||||||
|
|
||||||
<p><table><tr><td class="code"><pre>
|
<p><table><tr><td class="code"><pre>
|
||||||
virtual void GetVideoSize(int &Width, int &Height, eVideoAspect &Aspect);
|
virtual void GetOsdSize(int &Width, int &Height, double &Aspect);
|
||||||
</pre></td></tr></table><p>
|
</pre></td></tr></table><p>
|
||||||
|
|
||||||
By default, an OSD size of 480x324 with an aspect ratio of 4:3 is assumed.
|
By default, an OSD size of 720x480 with an aspect ratio of 1.0 is assumed.
|
||||||
</div modified>
|
</div modified>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
|
20
config.c
20
config.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: config.c 2.2 2009/05/03 13:58:08 kls Exp $
|
* $Id: config.c 2.5 2009/06/13 10:25:05 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
@ -20,6 +20,8 @@
|
|||||||
// format characters in order to allow any number of blanks after a numeric
|
// format characters in order to allow any number of blanks after a numeric
|
||||||
// value!
|
// value!
|
||||||
|
|
||||||
|
#define ChkDoublePlausibility(Variable, Default) { if (Variable < 0.00001) Variable = Default; }
|
||||||
|
|
||||||
// --- cCommand --------------------------------------------------------------
|
// --- cCommand --------------------------------------------------------------
|
||||||
|
|
||||||
char *cCommand::result = NULL;
|
char *cCommand::result = NULL;
|
||||||
@ -250,6 +252,7 @@ cSetup::cSetup(void)
|
|||||||
PrimaryLimit = 0;
|
PrimaryLimit = 0;
|
||||||
DefaultPriority = 50;
|
DefaultPriority = 50;
|
||||||
DefaultLifetime = 99;
|
DefaultLifetime = 99;
|
||||||
|
PauseKeyHandling = 2;
|
||||||
PausePriority = 10;
|
PausePriority = 10;
|
||||||
PauseLifetime = 1;
|
PauseLifetime = 1;
|
||||||
UseSubtitle = 1;
|
UseSubtitle = 1;
|
||||||
@ -270,6 +273,7 @@ cSetup::cSetup(void)
|
|||||||
OSDTop = 45;
|
OSDTop = 45;
|
||||||
OSDWidth = 624;
|
OSDWidth = 624;
|
||||||
OSDHeight = 486;
|
OSDHeight = 486;
|
||||||
|
OSDAspect = 1.0;
|
||||||
OSDMessageTime = 1;
|
OSDMessageTime = 1;
|
||||||
UseSmallFont = 1;
|
UseSmallFont = 1;
|
||||||
AntiAlias = 1;
|
AntiAlias = 1;
|
||||||
@ -435,6 +439,7 @@ bool cSetup::Parse(const char *Name, const char *Value)
|
|||||||
else if (!strcasecmp(Name, "PrimaryLimit")) PrimaryLimit = atoi(Value);
|
else if (!strcasecmp(Name, "PrimaryLimit")) PrimaryLimit = atoi(Value);
|
||||||
else if (!strcasecmp(Name, "DefaultPriority")) DefaultPriority = atoi(Value);
|
else if (!strcasecmp(Name, "DefaultPriority")) DefaultPriority = atoi(Value);
|
||||||
else if (!strcasecmp(Name, "DefaultLifetime")) DefaultLifetime = atoi(Value);
|
else if (!strcasecmp(Name, "DefaultLifetime")) DefaultLifetime = atoi(Value);
|
||||||
|
else if (!strcasecmp(Name, "PauseKeyHandling")) PauseKeyHandling = atoi(Value);
|
||||||
else if (!strcasecmp(Name, "PausePriority")) PausePriority = atoi(Value);
|
else if (!strcasecmp(Name, "PausePriority")) PausePriority = atoi(Value);
|
||||||
else if (!strcasecmp(Name, "PauseLifetime")) PauseLifetime = atoi(Value);
|
else if (!strcasecmp(Name, "PauseLifetime")) PauseLifetime = atoi(Value);
|
||||||
else if (!strcasecmp(Name, "UseSubtitle")) UseSubtitle = atoi(Value);
|
else if (!strcasecmp(Name, "UseSubtitle")) UseSubtitle = atoi(Value);
|
||||||
@ -449,21 +454,22 @@ bool cSetup::Parse(const char *Name, const char *Value)
|
|||||||
else if (!strcasecmp(Name, "ChannelInfoTime")) ChannelInfoTime = atoi(Value);
|
else if (!strcasecmp(Name, "ChannelInfoTime")) ChannelInfoTime = atoi(Value);
|
||||||
else if (!strcasecmp(Name, "OSDLeftP")) OSDLeftP = atof(Value);
|
else if (!strcasecmp(Name, "OSDLeftP")) OSDLeftP = atof(Value);
|
||||||
else if (!strcasecmp(Name, "OSDTopP")) OSDTopP = atof(Value);
|
else if (!strcasecmp(Name, "OSDTopP")) OSDTopP = atof(Value);
|
||||||
else if (!strcasecmp(Name, "OSDWidthP")) OSDWidthP = atof(Value);
|
else if (!strcasecmp(Name, "OSDWidthP")) { OSDWidthP = atof(Value); ChkDoublePlausibility(OSDWidthP, 0.87); }
|
||||||
else if (!strcasecmp(Name, "OSDHeightP")) OSDHeightP = atof(Value);
|
else if (!strcasecmp(Name, "OSDHeightP")) { OSDHeightP = atof(Value); ChkDoublePlausibility(OSDHeightP, 0.84); }
|
||||||
else if (!strcasecmp(Name, "OSDLeft")) OSDLeft = atoi(Value);
|
else if (!strcasecmp(Name, "OSDLeft")) OSDLeft = atoi(Value);
|
||||||
else if (!strcasecmp(Name, "OSDTop")) OSDTop = atoi(Value);
|
else if (!strcasecmp(Name, "OSDTop")) OSDTop = atoi(Value);
|
||||||
else if (!strcasecmp(Name, "OSDWidth")) { OSDWidth = atoi(Value); OSDWidth &= ~0x07; } // OSD width must be a multiple of 8
|
else if (!strcasecmp(Name, "OSDWidth")) { OSDWidth = atoi(Value); OSDWidth &= ~0x07; } // OSD width must be a multiple of 8
|
||||||
else if (!strcasecmp(Name, "OSDHeight")) OSDHeight = atoi(Value);
|
else if (!strcasecmp(Name, "OSDHeight")) OSDHeight = atoi(Value);
|
||||||
|
else if (!strcasecmp(Name, "OSDAspect")) OSDAspect = atof(Value);
|
||||||
else if (!strcasecmp(Name, "OSDMessageTime")) OSDMessageTime = atoi(Value);
|
else if (!strcasecmp(Name, "OSDMessageTime")) OSDMessageTime = atoi(Value);
|
||||||
else if (!strcasecmp(Name, "UseSmallFont")) UseSmallFont = atoi(Value);
|
else if (!strcasecmp(Name, "UseSmallFont")) UseSmallFont = atoi(Value);
|
||||||
else if (!strcasecmp(Name, "AntiAlias")) AntiAlias = atoi(Value);
|
else if (!strcasecmp(Name, "AntiAlias")) AntiAlias = atoi(Value);
|
||||||
else if (!strcasecmp(Name, "FontOsd")) Utf8Strn0Cpy(FontOsd, Value, MAXFONTNAME);
|
else if (!strcasecmp(Name, "FontOsd")) Utf8Strn0Cpy(FontOsd, Value, MAXFONTNAME);
|
||||||
else if (!strcasecmp(Name, "FontSml")) Utf8Strn0Cpy(FontSml, Value, MAXFONTNAME);
|
else if (!strcasecmp(Name, "FontSml")) Utf8Strn0Cpy(FontSml, Value, MAXFONTNAME);
|
||||||
else if (!strcasecmp(Name, "FontFix")) Utf8Strn0Cpy(FontFix, Value, MAXFONTNAME);
|
else if (!strcasecmp(Name, "FontFix")) Utf8Strn0Cpy(FontFix, Value, MAXFONTNAME);
|
||||||
else if (!strcasecmp(Name, "FontOsdSizeP")) FontOsdSizeP = atof(Value);
|
else if (!strcasecmp(Name, "FontOsdSizeP")) { FontOsdSizeP = atof(Value); ChkDoublePlausibility(FontOsdSizeP, 0.038); }
|
||||||
else if (!strcasecmp(Name, "FontSmlSizeP")) FontSmlSizeP = atof(Value);
|
else if (!strcasecmp(Name, "FontSmlSizeP")) { FontSmlSizeP = atof(Value); ChkDoublePlausibility(FontSmlSizeP, 0.035); }
|
||||||
else if (!strcasecmp(Name, "FontFixSizeP")) FontFixSizeP = atof(Value);
|
else if (!strcasecmp(Name, "FontFixSizeP")) { FontFixSizeP = atof(Value); ChkDoublePlausibility(FontFixSizeP, 0.031); }
|
||||||
else if (!strcasecmp(Name, "FontOsdSize")) FontOsdSize = atoi(Value);
|
else if (!strcasecmp(Name, "FontOsdSize")) FontOsdSize = atoi(Value);
|
||||||
else if (!strcasecmp(Name, "FontSmlSize")) FontSmlSize = atoi(Value);
|
else if (!strcasecmp(Name, "FontSmlSize")) FontSmlSize = atoi(Value);
|
||||||
else if (!strcasecmp(Name, "FontFixSize")) FontFixSize = atoi(Value);
|
else if (!strcasecmp(Name, "FontFixSize")) FontFixSize = atoi(Value);
|
||||||
@ -525,6 +531,7 @@ bool cSetup::Save(void)
|
|||||||
Store("PrimaryLimit", PrimaryLimit);
|
Store("PrimaryLimit", PrimaryLimit);
|
||||||
Store("DefaultPriority", DefaultPriority);
|
Store("DefaultPriority", DefaultPriority);
|
||||||
Store("DefaultLifetime", DefaultLifetime);
|
Store("DefaultLifetime", DefaultLifetime);
|
||||||
|
Store("PauseKeyHandling", PauseKeyHandling);
|
||||||
Store("PausePriority", PausePriority);
|
Store("PausePriority", PausePriority);
|
||||||
Store("PauseLifetime", PauseLifetime);
|
Store("PauseLifetime", PauseLifetime);
|
||||||
Store("UseSubtitle", UseSubtitle);
|
Store("UseSubtitle", UseSubtitle);
|
||||||
@ -545,6 +552,7 @@ bool cSetup::Save(void)
|
|||||||
Store("OSDTop", OSDTop);
|
Store("OSDTop", OSDTop);
|
||||||
Store("OSDWidth", OSDWidth);
|
Store("OSDWidth", OSDWidth);
|
||||||
Store("OSDHeight", OSDHeight);
|
Store("OSDHeight", OSDHeight);
|
||||||
|
Store("OSDAspect", OSDAspect);
|
||||||
Store("OSDMessageTime", OSDMessageTime);
|
Store("OSDMessageTime", OSDMessageTime);
|
||||||
Store("UseSmallFont", UseSmallFont);
|
Store("UseSmallFont", UseSmallFont);
|
||||||
Store("AntiAlias", AntiAlias);
|
Store("AntiAlias", AntiAlias);
|
||||||
|
14
config.h
14
config.h
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: config.h 2.9 2009/05/03 13:15:35 kls Exp $
|
* $Id: config.h 2.13 2009/05/21 11:11:32 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __CONFIG_H
|
#ifndef __CONFIG_H
|
||||||
@ -22,13 +22,13 @@
|
|||||||
|
|
||||||
// VDR's own version number:
|
// VDR's own version number:
|
||||||
|
|
||||||
#define VDRVERSION "1.7.7"
|
#define VDRVERSION "1.7.8"
|
||||||
#define VDRVERSNUM 10707 // Version * 10000 + Major * 100 + Minor
|
#define VDRVERSNUM 10708 // Version * 10000 + Major * 100 + Minor
|
||||||
|
|
||||||
// The plugin API's version number:
|
// The plugin API's version number:
|
||||||
|
|
||||||
#define APIVERSION "1.7.7"
|
#define APIVERSION "1.7.8"
|
||||||
#define APIVERSNUM 10707 // Version * 10000 + Major * 100 + Minor
|
#define APIVERSNUM 10708 // Version * 10000 + Major * 100 + Minor
|
||||||
|
|
||||||
// When loading plugins, VDR searches them by their APIVERSION, which
|
// When loading plugins, VDR searches them by their APIVERSION, which
|
||||||
// may be smaller than VDRVERSION in case there have been no changes to
|
// may be smaller than VDRVERSION in case there have been no changes to
|
||||||
@ -42,7 +42,7 @@
|
|||||||
#define MINOSDWIDTH 480
|
#define MINOSDWIDTH 480
|
||||||
#define MAXOSDWIDTH 1920
|
#define MAXOSDWIDTH 1920
|
||||||
#define MINOSDHEIGHT 324
|
#define MINOSDHEIGHT 324
|
||||||
#define MAXOSDHEIGHT 1080
|
#define MAXOSDHEIGHT 1200
|
||||||
|
|
||||||
#define MaxFileName 256
|
#define MaxFileName 256
|
||||||
#define MaxSkinName 16
|
#define MaxSkinName 16
|
||||||
@ -234,6 +234,7 @@ public:
|
|||||||
int PrimaryLimit;
|
int PrimaryLimit;
|
||||||
int DefaultPriority, DefaultLifetime;
|
int DefaultPriority, DefaultLifetime;
|
||||||
int PausePriority, PauseLifetime;
|
int PausePriority, PauseLifetime;
|
||||||
|
int PauseKeyHandling;
|
||||||
int UseSubtitle;
|
int UseSubtitle;
|
||||||
int UseVps;
|
int UseVps;
|
||||||
int VpsMargin;
|
int VpsMargin;
|
||||||
@ -246,6 +247,7 @@ public:
|
|||||||
int ChannelInfoTime;
|
int ChannelInfoTime;
|
||||||
double OSDLeftP, OSDTopP, OSDWidthP, OSDHeightP;
|
double OSDLeftP, OSDTopP, OSDWidthP, OSDHeightP;
|
||||||
int OSDLeft, OSDTop, OSDWidth, OSDHeight;
|
int OSDLeft, OSDTop, OSDWidth, OSDHeight;
|
||||||
|
double OSDAspect;
|
||||||
int OSDMessageTime;
|
int OSDMessageTime;
|
||||||
int UseSmallFont;
|
int UseSmallFont;
|
||||||
int AntiAlias;
|
int AntiAlias;
|
||||||
|
23
device.c
23
device.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: device.c 2.17 2009/05/02 12:17:39 kls Exp $
|
* $Id: device.c 2.23 2009/06/06 13:25:58 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "device.h"
|
#include "device.h"
|
||||||
@ -19,11 +19,6 @@
|
|||||||
#include "status.h"
|
#include "status.h"
|
||||||
#include "transfer.h"
|
#include "transfer.h"
|
||||||
|
|
||||||
const char *VideoAspectString[] = { "4:3",
|
|
||||||
"16:9",
|
|
||||||
"2.21:9"
|
|
||||||
};
|
|
||||||
|
|
||||||
// --- cLiveSubtitle ---------------------------------------------------------
|
// --- cLiveSubtitle ---------------------------------------------------------
|
||||||
|
|
||||||
class cLiveSubtitle : public cReceiver {
|
class cLiveSubtitle : public cReceiver {
|
||||||
@ -66,6 +61,7 @@ cDevice *cDevice::primaryDevice = NULL;
|
|||||||
cDevice *cDevice::avoidDevice = NULL;
|
cDevice *cDevice::avoidDevice = NULL;
|
||||||
|
|
||||||
cDevice::cDevice(void)
|
cDevice::cDevice(void)
|
||||||
|
:patPmtParser(true)
|
||||||
{
|
{
|
||||||
cardIndex = nextCardIndex++;
|
cardIndex = nextCardIndex++;
|
||||||
|
|
||||||
@ -389,11 +385,18 @@ eVideoSystem cDevice::GetVideoSystem(void)
|
|||||||
return vsPAL;
|
return vsPAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void cDevice::GetVideoSize(int &Width, int &Height, eVideoAspect &Aspect)
|
void cDevice::GetVideoSize(int &Width, int &Height, double &VideoAspect)
|
||||||
{
|
{
|
||||||
Width = MINOSDWIDTH;
|
Width = 0;
|
||||||
Height = MINOSDHEIGHT;
|
Height = 0;
|
||||||
Aspect = va4_3;
|
VideoAspect = 1.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void cDevice::GetOsdSize(int &Width, int &Height, double &PixelAspect)
|
||||||
|
{
|
||||||
|
Width = 720;
|
||||||
|
Height = 480;
|
||||||
|
PixelAspect = 1.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
//#define PRINTPIDS(s) { char b[500]; char *q = b; q += sprintf(q, "%d %s ", CardIndex(), s); for (int i = 0; i < MAXPIDHANDLES; i++) q += sprintf(q, " %s%4d %d", i == ptOther ? "* " : "", pidHandles[i].pid, pidHandles[i].used); dsyslog(b); }
|
//#define PRINTPIDS(s) { char b[500]; char *q = b; q += sprintf(q, "%d %s ", CardIndex(), s); for (int i = 0; i < MAXPIDHANDLES; i++) q += sprintf(q, " %s%4d %d", i == ptOther ? "* " : "", pidHandles[i].pid, pidHandles[i].used); dsyslog(b); }
|
||||||
|
31
device.h
31
device.h
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: device.h 2.10 2009/05/02 12:16:20 kls Exp $
|
* $Id: device.h 2.15 2009/06/06 11:15:49 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __DEVICE_H
|
#ifndef __DEVICE_H
|
||||||
@ -56,13 +56,6 @@ enum eVideoSystem { vsPAL,
|
|||||||
vsNTSC
|
vsNTSC
|
||||||
};
|
};
|
||||||
|
|
||||||
enum eVideoAspect { va4_3,
|
|
||||||
va16_9,
|
|
||||||
va221_9
|
|
||||||
};
|
|
||||||
|
|
||||||
extern const char *VideoAspectString[];
|
|
||||||
|
|
||||||
enum eVideoDisplayFormat { vdfPanAndScan,
|
enum eVideoDisplayFormat { vdfPanAndScan,
|
||||||
vdfLetterBox,
|
vdfLetterBox,
|
||||||
vdfCenterCutOut
|
vdfCenterCutOut
|
||||||
@ -384,9 +377,25 @@ public:
|
|||||||
virtual eVideoSystem GetVideoSystem(void);
|
virtual eVideoSystem GetVideoSystem(void);
|
||||||
///< Returns the video system of the currently displayed material
|
///< Returns the video system of the currently displayed material
|
||||||
///< (default is PAL).
|
///< (default is PAL).
|
||||||
virtual void GetVideoSize(int &Width, int &Height, eVideoAspect &Aspect);
|
virtual void GetVideoSize(int &Width, int &Height, double &VideoAspect);
|
||||||
///< Returns the With, Height and Aspect ratio of the currently
|
///< Returns the With, Height and VideoAspect ratio of the currently
|
||||||
///< displayed material.
|
///< displayed video material. The data returned by this function is
|
||||||
|
///< only used for informational purposes (if any). Width and
|
||||||
|
///< Height are given in pixel (e.g. 720x576) and VideoAspect is
|
||||||
|
///< e.g. 1.33333 for a 4:3 broadcast, or 1.77778 for 16:9.
|
||||||
|
///< The default implementation returns 0 for Width and Height
|
||||||
|
///< and 1.0 for VideoAspect.
|
||||||
|
virtual void GetOsdSize(int &Width, int &Height, double &PixelAspect);
|
||||||
|
///< Returns the With, Height and PixelAspect ratio the OSD should use
|
||||||
|
///< to best fit the resolution of the output device. If PixelAspect
|
||||||
|
///< is not 1.0, the OSD may take this as a hint to scale its
|
||||||
|
///< graphics in a way that, e.g., a circle will actually
|
||||||
|
///< show up as a circle on the screen, and not as an ellipse.
|
||||||
|
///< Values greater than 1.0 mean to stretch the graphics in the
|
||||||
|
///< vertical direction (or shrink it in the horizontal direction,
|
||||||
|
///< depending on which dimension shall be fixed). Values less than
|
||||||
|
///< 1.0 work the other way round. Note that the OSD is not guaranteed
|
||||||
|
///< to actually use this hint.
|
||||||
|
|
||||||
// Track facilities
|
// Track facilities
|
||||||
|
|
||||||
|
49
dvbdevice.c
49
dvbdevice.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: dvbdevice.c 2.15 2009/05/03 13:49:41 kls Exp $
|
* $Id: dvbdevice.c 2.21 2009/06/06 11:17:20 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "dvbdevice.h"
|
#include "dvbdevice.h"
|
||||||
@ -232,8 +232,8 @@ bool cDvbTuner::SetFrontend(void)
|
|||||||
uchar *codes = diseqc->Codes(n);
|
uchar *codes = diseqc->Codes(n);
|
||||||
if (codes) {
|
if (codes) {
|
||||||
struct dvb_diseqc_master_cmd cmd;
|
struct dvb_diseqc_master_cmd cmd;
|
||||||
memcpy(cmd.msg, codes, min(n, int(sizeof(cmd.msg))));
|
cmd.msg_len = min(n, int(sizeof(cmd.msg)));
|
||||||
cmd.msg_len = n;
|
memcpy(cmd.msg, codes, cmd.msg_len);
|
||||||
CHECK(ioctl(fd_frontend, FE_DISEQC_SEND_MASTER_CMD, &cmd));
|
CHECK(ioctl(fd_frontend, FE_DISEQC_SEND_MASTER_CMD, &cmd));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -736,6 +736,7 @@ void cDvbDevice::SetVideoFormat(bool VideoFormat16_9)
|
|||||||
eVideoSystem cDvbDevice::GetVideoSystem(void)
|
eVideoSystem cDvbDevice::GetVideoSystem(void)
|
||||||
{
|
{
|
||||||
eVideoSystem VideoSystem = vsPAL;
|
eVideoSystem VideoSystem = vsPAL;
|
||||||
|
if (fd_video >= 0) {
|
||||||
video_size_t vs;
|
video_size_t vs;
|
||||||
if (ioctl(fd_video, VIDEO_GET_SIZE, &vs) == 0) {
|
if (ioctl(fd_video, VIDEO_GET_SIZE, &vs) == 0) {
|
||||||
if (vs.h == 480 || vs.h == 240)
|
if (vs.h == 480 || vs.h == 240)
|
||||||
@ -743,24 +744,54 @@ eVideoSystem cDvbDevice::GetVideoSystem(void)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
LOG_ERROR;
|
LOG_ERROR;
|
||||||
|
}
|
||||||
return VideoSystem;
|
return VideoSystem;
|
||||||
}
|
}
|
||||||
|
|
||||||
void cDvbDevice::GetVideoSize(int &Width, int &Height, eVideoAspect &Aspect)
|
void cDvbDevice::GetVideoSize(int &Width, int &Height, double &VideoAspect)
|
||||||
{
|
{
|
||||||
|
if (fd_video >= 0) {
|
||||||
video_size_t vs;
|
video_size_t vs;
|
||||||
if (ioctl(fd_video, VIDEO_GET_SIZE, &vs) == 0) {
|
if (ioctl(fd_video, VIDEO_GET_SIZE, &vs) == 0) {
|
||||||
Width = vs.w;
|
Width = vs.w;
|
||||||
if (Width < 720) // FIXME: some channels result in a With of, e.g. 544, but the final video *is* 720 wide
|
|
||||||
Width = 720;
|
|
||||||
Height = vs.h;
|
Height = vs.h;
|
||||||
Aspect = eVideoAspect(vs.aspect_ratio);
|
switch (vs.aspect_ratio) {
|
||||||
if (Width >= MINOSDWIDTH && Width <= MAXOSDWIDTH && Height >= MINOSDHEIGHT && Height <= MAXOSDHEIGHT)
|
default:
|
||||||
|
case VIDEO_FORMAT_4_3: VideoAspect = 4.0 / 3.0; break;
|
||||||
|
case VIDEO_FORMAT_16_9: VideoAspect = 16.0 / 9.0; break;
|
||||||
|
case VIDEO_FORMAT_221_1: VideoAspect = 2.21; break;
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
LOG_ERROR;
|
LOG_ERROR;
|
||||||
cDevice::GetVideoSize(Width, Height, Aspect);
|
}
|
||||||
|
cDevice::GetVideoSize(Width, Height, VideoAspect);
|
||||||
|
}
|
||||||
|
|
||||||
|
void cDvbDevice::GetOsdSize(int &Width, int &Height, double &PixelAspect)
|
||||||
|
{
|
||||||
|
if (fd_video >= 0) {
|
||||||
|
video_size_t vs;
|
||||||
|
if (ioctl(fd_video, VIDEO_GET_SIZE, &vs) == 0) {
|
||||||
|
Width = 720;
|
||||||
|
if (vs.h != 480 && vs.h != 240)
|
||||||
|
Height = 576; // PAL
|
||||||
|
else
|
||||||
|
Height = 480; // NTSC
|
||||||
|
switch (Setup.VideoFormat ? vs.aspect_ratio : VIDEO_FORMAT_4_3) {
|
||||||
|
default:
|
||||||
|
case VIDEO_FORMAT_4_3: PixelAspect = 4.0 / 3.0; break;
|
||||||
|
case VIDEO_FORMAT_221_1: // FF DVB cards only distinguish between 4:3 and 16:9
|
||||||
|
case VIDEO_FORMAT_16_9: PixelAspect = 16.0 / 9.0; break;
|
||||||
|
}
|
||||||
|
PixelAspect /= double(Width) / Height;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
LOG_ERROR;
|
||||||
|
}
|
||||||
|
cDevice::GetOsdSize(Width, Height, PixelAspect);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool cDvbDevice::SetAudioBypass(bool On)
|
bool cDvbDevice::SetAudioBypass(bool On)
|
||||||
|
@ -4,12 +4,13 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: dvbdevice.h 2.4 2009/05/02 10:44:40 kls Exp $
|
* $Id: dvbdevice.h 2.8 2009/06/06 11:16:47 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __DVBDEVICE_H
|
#ifndef __DVBDEVICE_H
|
||||||
#define __DVBDEVICE_H
|
#define __DVBDEVICE_H
|
||||||
|
|
||||||
|
#include <sys/mman.h> // FIXME: workaround for broken linux-dvb header files
|
||||||
#include <linux/dvb/frontend.h>
|
#include <linux/dvb/frontend.h>
|
||||||
#include <linux/dvb/version.h>
|
#include <linux/dvb/version.h>
|
||||||
#include "device.h"
|
#include "device.h"
|
||||||
@ -107,7 +108,8 @@ public:
|
|||||||
virtual void SetVideoDisplayFormat(eVideoDisplayFormat VideoDisplayFormat);
|
virtual void SetVideoDisplayFormat(eVideoDisplayFormat VideoDisplayFormat);
|
||||||
virtual void SetVideoFormat(bool VideoFormat16_9);
|
virtual void SetVideoFormat(bool VideoFormat16_9);
|
||||||
virtual eVideoSystem GetVideoSystem(void);
|
virtual eVideoSystem GetVideoSystem(void);
|
||||||
virtual void GetVideoSize(int &Width, int &Height, eVideoAspect &Aspect);
|
virtual void GetVideoSize(int &Width, int &Height, double &VideoAspect);
|
||||||
|
virtual void GetOsdSize(int &Width, int &Height, double &PixelAspect);
|
||||||
|
|
||||||
// Track facilities
|
// Track facilities
|
||||||
|
|
||||||
|
78
dvbplayer.c
78
dvbplayer.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: dvbplayer.c 2.15 2009/04/19 15:19:10 kls Exp $
|
* $Id: dvbplayer.c 2.17 2009/05/31 14:12:42 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "dvbplayer.h"
|
#include "dvbplayer.h"
|
||||||
@ -89,7 +89,6 @@ private:
|
|||||||
uchar *buffer;
|
uchar *buffer;
|
||||||
int wanted;
|
int wanted;
|
||||||
int length;
|
int length;
|
||||||
bool hasData;
|
|
||||||
cCondWait newSet;
|
cCondWait newSet;
|
||||||
cCondVar newDataCond;
|
cCondVar newDataCond;
|
||||||
cMutex newDataMutex;
|
cMutex newDataMutex;
|
||||||
@ -99,7 +98,8 @@ public:
|
|||||||
cNonBlockingFileReader(void);
|
cNonBlockingFileReader(void);
|
||||||
~cNonBlockingFileReader();
|
~cNonBlockingFileReader();
|
||||||
void Clear(void);
|
void Clear(void);
|
||||||
int Read(cUnbufferedFile *File, uchar *Buffer, int Length);
|
void Request(cUnbufferedFile *File, int Length);
|
||||||
|
int Result(uchar **Buffer);
|
||||||
bool Reading(void) { return buffer; }
|
bool Reading(void) { return buffer; }
|
||||||
bool WaitForDataMs(int msToWait);
|
bool WaitForDataMs(int msToWait);
|
||||||
};
|
};
|
||||||
@ -110,7 +110,6 @@ cNonBlockingFileReader::cNonBlockingFileReader(void)
|
|||||||
f = NULL;
|
f = NULL;
|
||||||
buffer = NULL;
|
buffer = NULL;
|
||||||
wanted = length = 0;
|
wanted = length = 0;
|
||||||
hasData = false;
|
|
||||||
Start();
|
Start();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -128,29 +127,27 @@ void cNonBlockingFileReader::Clear(void)
|
|||||||
free(buffer);
|
free(buffer);
|
||||||
buffer = NULL;
|
buffer = NULL;
|
||||||
wanted = length = 0;
|
wanted = length = 0;
|
||||||
hasData = false;
|
Unlock();
|
||||||
|
}
|
||||||
|
|
||||||
|
void cNonBlockingFileReader::Request(cUnbufferedFile *File, int Length)
|
||||||
|
{
|
||||||
|
Lock();
|
||||||
|
Clear();
|
||||||
|
wanted = Length;
|
||||||
|
buffer = MALLOC(uchar, wanted);
|
||||||
|
f = File;
|
||||||
Unlock();
|
Unlock();
|
||||||
newSet.Signal();
|
newSet.Signal();
|
||||||
}
|
}
|
||||||
|
|
||||||
int cNonBlockingFileReader::Read(cUnbufferedFile *File, uchar *Buffer, int Length)
|
int cNonBlockingFileReader::Result(uchar **Buffer)
|
||||||
{
|
{
|
||||||
if (hasData && buffer) {
|
LOCK_THREAD;
|
||||||
if (buffer != Buffer) {
|
if (buffer && length == wanted) {
|
||||||
esyslog("ERROR: cNonBlockingFileReader::Read() called with different buffer!");
|
*Buffer = buffer;
|
||||||
errno = EINVAL;
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
buffer = NULL;
|
buffer = NULL;
|
||||||
return length;
|
return wanted;
|
||||||
}
|
|
||||||
if (!buffer) {
|
|
||||||
f = File;
|
|
||||||
buffer = Buffer;
|
|
||||||
wanted = Length;
|
|
||||||
length = 0;
|
|
||||||
hasData = false;
|
|
||||||
newSet.Signal();
|
|
||||||
}
|
}
|
||||||
errno = EAGAIN;
|
errno = EAGAIN;
|
||||||
return -1;
|
return -1;
|
||||||
@ -160,20 +157,23 @@ void cNonBlockingFileReader::Action(void)
|
|||||||
{
|
{
|
||||||
while (Running()) {
|
while (Running()) {
|
||||||
Lock();
|
Lock();
|
||||||
if (!hasData && f && buffer) {
|
if (f && buffer && length < wanted) {
|
||||||
int r = f->Read(buffer + length, wanted - length);
|
int r = f->Read(buffer + length, wanted - length);
|
||||||
if (r >= 0) {
|
if (r > 0)
|
||||||
length += r;
|
length += r;
|
||||||
if (!r || length == wanted) { // r == 0 means EOF
|
else if (r == 0) { // r == 0 means EOF
|
||||||
cMutexLock NewDataLock(&newDataMutex);
|
if (length > 0)
|
||||||
hasData = true;
|
wanted = length; // already read something, so return the rest
|
||||||
newDataCond.Broadcast();
|
else
|
||||||
|
length = wanted = 0; // report EOF
|
||||||
}
|
}
|
||||||
}
|
else if (FATALERRNO) {
|
||||||
else if (r < 0 && FATALERRNO) {
|
|
||||||
LOG_ERROR;
|
LOG_ERROR;
|
||||||
length = r; // this will forward the error status to the caller
|
length = wanted = r; // this will forward the error status to the caller
|
||||||
hasData = true;
|
}
|
||||||
|
if (length == wanted) {
|
||||||
|
cMutexLock NewDataLock(&newDataMutex);
|
||||||
|
newDataCond.Broadcast();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Unlock();
|
Unlock();
|
||||||
@ -184,7 +184,7 @@ void cNonBlockingFileReader::Action(void)
|
|||||||
bool cNonBlockingFileReader::WaitForDataMs(int msToWait)
|
bool cNonBlockingFileReader::WaitForDataMs(int msToWait)
|
||||||
{
|
{
|
||||||
cMutexLock NewDataLock(&newDataMutex);
|
cMutexLock NewDataLock(&newDataMutex);
|
||||||
if (hasData)
|
if (buffer && length == wanted)
|
||||||
return true;
|
return true;
|
||||||
return newDataCond.TimedWait(newDataMutex, msToWait);
|
return newDataCond.TimedWait(newDataMutex, msToWait);
|
||||||
}
|
}
|
||||||
@ -381,7 +381,6 @@ void cDvbPlayer::Activate(bool On)
|
|||||||
|
|
||||||
void cDvbPlayer::Action(void)
|
void cDvbPlayer::Action(void)
|
||||||
{
|
{
|
||||||
uchar *b = NULL;
|
|
||||||
uchar *p = NULL;
|
uchar *p = NULL;
|
||||||
int pc = 0;
|
int pc = 0;
|
||||||
|
|
||||||
@ -461,10 +460,12 @@ void cDvbPlayer::Action(void)
|
|||||||
esyslog("ERROR: frame larger than buffer (%d > %d)", Length, MAXFRAMESIZE);
|
esyslog("ERROR: frame larger than buffer (%d > %d)", Length, MAXFRAMESIZE);
|
||||||
Length = MAXFRAMESIZE;
|
Length = MAXFRAMESIZE;
|
||||||
}
|
}
|
||||||
b = MALLOC(uchar, Length);
|
if (!eof)
|
||||||
|
nonBlockingFileReader->Request(replayFile, Length);
|
||||||
}
|
}
|
||||||
if (!eof) {
|
if (!eof) {
|
||||||
int r = nonBlockingFileReader->Read(replayFile, b, Length);
|
uchar *b = NULL;
|
||||||
|
int r = nonBlockingFileReader->Result(&b);
|
||||||
if (r > 0) {
|
if (r > 0) {
|
||||||
WaitingForData = false;
|
WaitingForData = false;
|
||||||
uint32_t Pts = 0;
|
uint32_t Pts = 0;
|
||||||
@ -473,18 +474,19 @@ void cDvbPlayer::Action(void)
|
|||||||
LastReadIFrame = readIndex;
|
LastReadIFrame = readIndex;
|
||||||
}
|
}
|
||||||
readFrame = new cFrame(b, -r, ftUnknown, readIndex, Pts); // hands over b to the ringBuffer
|
readFrame = new cFrame(b, -r, ftUnknown, readIndex, Pts); // hands over b to the ringBuffer
|
||||||
b = NULL;
|
|
||||||
}
|
}
|
||||||
else if (r == 0)
|
|
||||||
eof = true;
|
|
||||||
else if (r < 0 && errno == EAGAIN)
|
else if (r < 0 && errno == EAGAIN)
|
||||||
WaitingForData = true;
|
WaitingForData = true;
|
||||||
|
else {
|
||||||
|
if (r == 0)
|
||||||
|
eof = true;
|
||||||
else if (r < 0 && FATALERRNO) {
|
else if (r < 0 && FATALERRNO) {
|
||||||
LOG_ERROR;
|
LOG_ERROR;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Store the frame in the buffer:
|
// Store the frame in the buffer:
|
||||||
|
|
||||||
|
31
dvbspu.c
31
dvbspu.c
@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
* parts of this file are derived from the OMS program.
|
* parts of this file are derived from the OMS program.
|
||||||
*
|
*
|
||||||
* $Id: dvbspu.c 2.0 2007/02/03 10:13:18 kls Exp $
|
* $Id: dvbspu.c 2.1 2009/05/09 16:25:59 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "dvbspu.h"
|
#include "dvbspu.h"
|
||||||
@ -55,18 +55,16 @@ void cDvbSpuPalette::setPalette(const uint32_t * pal)
|
|||||||
#define setMin(a, b) if (a > b) a = b
|
#define setMin(a, b) if (a > b) a = b
|
||||||
#define setMax(a, b) if (a < b) a = b
|
#define setMax(a, b) if (a < b) a = b
|
||||||
|
|
||||||
#define spuXres 720
|
|
||||||
#define spuYres 576
|
|
||||||
|
|
||||||
#define revRect(r1, r2) { r1.x1 = r2.x2; r1.y1 = r2.y2; r1.x2 = r2.x1; r1.y2 = r2.y1; }
|
#define revRect(r1, r2) { r1.x1 = r2.x2; r1.y1 = r2.y2; r1.x2 = r2.x1; r1.y2 = r2.y1; }
|
||||||
|
|
||||||
cDvbSpuBitmap::cDvbSpuBitmap(sDvbSpuRect size,
|
cDvbSpuBitmap::cDvbSpuBitmap(sDvbSpuRect size,
|
||||||
uint8_t * fodd, uint8_t * eodd,
|
uint8_t * fodd, uint8_t * eodd,
|
||||||
uint8_t * feven, uint8_t * eeven)
|
uint8_t * feven, uint8_t * eeven)
|
||||||
{
|
{
|
||||||
if (size.x1 < 0 || size.y1 < 0 || size.x2 >= spuXres
|
size.x1 = max(size.x1, 0);
|
||||||
|| size.y2 >= spuYres)
|
size.y1 = max(size.y1, 0);
|
||||||
throw;
|
size.x2 = min(size.x2, Setup.OSDWidth);
|
||||||
|
size.y2 = min(size.y2, Setup.OSDHeight);
|
||||||
|
|
||||||
bmpsize = size;
|
bmpsize = size;
|
||||||
revRect(minsize[0], size);
|
revRect(minsize[0], size);
|
||||||
@ -74,10 +72,11 @@ cDvbSpuBitmap::cDvbSpuBitmap(sDvbSpuRect size,
|
|||||||
revRect(minsize[2], size);
|
revRect(minsize[2], size);
|
||||||
revRect(minsize[3], size);
|
revRect(minsize[3], size);
|
||||||
|
|
||||||
if (!(bmp = new uint8_t[spuXres * spuYres * sizeof(uint8_t)]))
|
int MemSize = bmpsize.width() * bmpsize.height() * sizeof(uint8_t);
|
||||||
throw;
|
bmp = new uint8_t[MemSize];
|
||||||
|
|
||||||
memset(bmp, 0, spuXres * spuYres * sizeof(uint8_t));
|
if (bmp)
|
||||||
|
memset(bmp, 0, MemSize);
|
||||||
putFieldData(0, fodd, eodd);
|
putFieldData(0, fodd, eodd);
|
||||||
putFieldData(1, feven, eeven);
|
putFieldData(1, feven, eeven);
|
||||||
}
|
}
|
||||||
@ -94,10 +93,10 @@ cBitmap *cDvbSpuBitmap::getBitmap(const aDvbSpuPalDescr paldescr,
|
|||||||
int h = size.height();
|
int h = size.height();
|
||||||
int w = size.width();
|
int w = size.width();
|
||||||
|
|
||||||
if (size.y1 + h >= spuYres)
|
if (size.y1 + h >= bmpsize.height())
|
||||||
h = spuYres - size.y1 - 1;
|
h = bmpsize.height() - size.y1 - 1;
|
||||||
if (size.x1 + w >= spuXres)
|
if (size.x1 + w >= bmpsize.width())
|
||||||
w = spuXres - size.x1 - 1;
|
w = bmpsize.width() - size.x1 - 1;
|
||||||
|
|
||||||
if (w & 0x03)
|
if (w & 0x03)
|
||||||
w += 4 - (w & 0x03);
|
w += 4 - (w & 0x03);
|
||||||
@ -114,7 +113,7 @@ cBitmap *cDvbSpuBitmap::getBitmap(const aDvbSpuPalDescr paldescr,
|
|||||||
// set the content
|
// set the content
|
||||||
for (int yp = 0; yp < h; yp++) {
|
for (int yp = 0; yp < h; yp++) {
|
||||||
for (int xp = 0; xp < w; xp++) {
|
for (int xp = 0; xp < w; xp++) {
|
||||||
uint8_t idx = bmp[(size.y1 + yp) * spuXres + size.x1 + xp];
|
uint8_t idx = bmp[(size.y1 + yp) * bmpsize.width() + size.x1 + xp];
|
||||||
ret->SetIndex(xp, yp, idx);
|
ret->SetIndex(xp, yp, idx);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -150,7 +149,7 @@ bool cDvbSpuBitmap::getMinSize(const aDvbSpuPalDescr paldescr,
|
|||||||
|
|
||||||
void cDvbSpuBitmap::putPixel(int xp, int yp, int len, uint8_t colorid)
|
void cDvbSpuBitmap::putPixel(int xp, int yp, int len, uint8_t colorid)
|
||||||
{
|
{
|
||||||
memset(bmp + spuXres * yp + xp, colorid, len);
|
memset(bmp + bmpsize.width() * yp + xp, colorid, len);
|
||||||
setMin(minsize[colorid].x1, xp);
|
setMin(minsize[colorid].x1, xp);
|
||||||
setMin(minsize[colorid].y1, yp);
|
setMin(minsize[colorid].y1, yp);
|
||||||
setMax(minsize[colorid].x2, xp + len - 1);
|
setMax(minsize[colorid].x2, xp + len - 1);
|
||||||
|
8
dvbspu.h
8
dvbspu.h
@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
* parts of this file are derived from the OMS program.
|
* parts of this file are derived from the OMS program.
|
||||||
*
|
*
|
||||||
* $Id: dvbspu.h 2.0 2006/04/17 12:47:29 kls Exp $
|
* $Id: dvbspu.h 2.1 2009/05/09 16:26:45 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __DVBSPU_H
|
#ifndef __DVBSPU_H
|
||||||
@ -32,10 +32,10 @@ typedef struct sDvbSpuRect {
|
|||||||
int x1, y1;
|
int x1, y1;
|
||||||
int x2, y2;
|
int x2, y2;
|
||||||
|
|
||||||
int width() {
|
int width() const {
|
||||||
return x2 - x1 + 1;
|
return x2 - x1 + 1;
|
||||||
};
|
};
|
||||||
int height() {
|
int height() const {
|
||||||
return y2 - y1 + 1;
|
return y2 - y1 + 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -63,8 +63,6 @@ class cDvbSpuPalette {
|
|||||||
// --- cDvbSpuBitmap----------------------------------------------------------
|
// --- cDvbSpuBitmap----------------------------------------------------------
|
||||||
|
|
||||||
class cDvbSpuBitmap {
|
class cDvbSpuBitmap {
|
||||||
|
|
||||||
public:
|
|
||||||
private:
|
private:
|
||||||
sDvbSpuRect bmpsize;
|
sDvbSpuRect bmpsize;
|
||||||
sDvbSpuRect minsize[4];
|
sDvbSpuRect minsize[4];
|
||||||
|
9
eit.c
9
eit.c
@ -8,7 +8,7 @@
|
|||||||
* Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>.
|
* Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>.
|
||||||
* Adapted to 'libsi' for VDR 1.3.0 by Marcel Wiesweg <marcel.wiesweg@gmx.de>.
|
* Adapted to 'libsi' for VDR 1.3.0 by Marcel Wiesweg <marcel.wiesweg@gmx.de>.
|
||||||
*
|
*
|
||||||
* $Id: eit.c 2.3 2009/04/11 10:03:24 kls Exp $
|
* $Id: eit.c 2.5 2009/05/15 12:34:43 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "eit.h"
|
#include "eit.h"
|
||||||
@ -17,6 +17,8 @@
|
|||||||
#include "libsi/section.h"
|
#include "libsi/section.h"
|
||||||
#include "libsi/descriptor.h"
|
#include "libsi/descriptor.h"
|
||||||
|
|
||||||
|
#define VALID_TIME (31536000 * 2) // two years
|
||||||
|
|
||||||
// --- cEIT ------------------------------------------------------------------
|
// --- cEIT ------------------------------------------------------------------
|
||||||
|
|
||||||
class cEIT : public SI::EIT {
|
class cEIT : public SI::EIT {
|
||||||
@ -46,10 +48,13 @@ cEIT::cEIT(cSchedules *Schedules, int Source, u_char Tid, const u_char *Data, bo
|
|||||||
struct tm tm_r;
|
struct tm tm_r;
|
||||||
struct tm t = *localtime_r(&Now, &tm_r); // this initializes the time zone in 't'
|
struct tm t = *localtime_r(&Now, &tm_r); // this initializes the time zone in 't'
|
||||||
|
|
||||||
|
if (Now < VALID_TIME)
|
||||||
|
return; // we need the current time for handling PDC descriptors
|
||||||
|
|
||||||
SI::EIT::Event SiEitEvent;
|
SI::EIT::Event SiEitEvent;
|
||||||
for (SI::Loop::Iterator it; eventLoop.getNext(SiEitEvent, it); ) {
|
for (SI::Loop::Iterator it; eventLoop.getNext(SiEitEvent, it); ) {
|
||||||
bool ExternalData = false;
|
bool ExternalData = false;
|
||||||
int StartTime = SiEitEvent.getStartTime();
|
time_t StartTime = SiEitEvent.getStartTime();
|
||||||
int Duration = SiEitEvent.getDuration();
|
int Duration = SiEitEvent.getDuration();
|
||||||
// Drop bogus events - but keep NVOD reference events, where all bits of the start time field are set to 1, resulting in a negative number.
|
// Drop bogus events - but keep NVOD reference events, where all bits of the start time field are set to 1, resulting in a negative number.
|
||||||
if (StartTime == 0 || StartTime > 0 && Duration == 0)
|
if (StartTime == 0 || StartTime > 0 && Duration == 0)
|
||||||
|
10
font.h
10
font.h
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: font.h 2.1 2009/05/03 11:00:19 kls Exp $
|
* $Id: font.h 2.2 2009/05/23 10:10:40 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __FONT_H
|
#ifndef __FONT_H
|
||||||
@ -55,9 +55,11 @@ public:
|
|||||||
static const cFont *GetFont(eDvbFont Font);
|
static const cFont *GetFont(eDvbFont Font);
|
||||||
///< Gets the given Font, which was previously set by a call to SetFont().
|
///< Gets the given Font, which was previously set by a call to SetFont().
|
||||||
///< If no SetFont() call has been made, the font as defined in the setup is returned.
|
///< If no SetFont() call has been made, the font as defined in the setup is returned.
|
||||||
///< The caller must not use the returned font outside the scope in which
|
///< GetFont() is not thread-safe, and shall only be called from the main
|
||||||
///< it was retrieved by the call to GetFont(), because a call to SetFont()
|
///< thread! A font returned by GetFont() must only be used locally inside the
|
||||||
///< may delete an existing font.
|
///< function it was retrieved from, and no long term pointer to it shall be kept,
|
||||||
|
///< because the cFont object may become invalid at any time after the
|
||||||
|
///< function that called GetFont() has returned.
|
||||||
static cFont *CreateFont(const char *Name, int CharHeight, int CharWidth = 0);
|
static cFont *CreateFont(const char *Name, int CharHeight, int CharWidth = 0);
|
||||||
///< Creates a new font object with the given Name and makes its characters
|
///< Creates a new font object with the given Name and makes its characters
|
||||||
///< CharHeight pixels high. If CharWidth is given, it overwrites the font's
|
///< CharHeight pixels high. If CharWidth is given, it overwrites the font's
|
||||||
|
8
menu.c
8
menu.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: menu.c 2.7 2009/05/03 13:30:13 kls Exp $
|
* $Id: menu.c 2.8 2009/05/21 11:10:38 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "menu.h"
|
#include "menu.h"
|
||||||
@ -2672,18 +2672,24 @@ eOSState cMenuSetupCAM::ProcessKey(eKeys Key)
|
|||||||
// --- cMenuSetupRecord ------------------------------------------------------
|
// --- cMenuSetupRecord ------------------------------------------------------
|
||||||
|
|
||||||
class cMenuSetupRecord : public cMenuSetupBase {
|
class cMenuSetupRecord : public cMenuSetupBase {
|
||||||
|
private:
|
||||||
|
const char *pauseKeyHandlingTexts[3];
|
||||||
public:
|
public:
|
||||||
cMenuSetupRecord(void);
|
cMenuSetupRecord(void);
|
||||||
};
|
};
|
||||||
|
|
||||||
cMenuSetupRecord::cMenuSetupRecord(void)
|
cMenuSetupRecord::cMenuSetupRecord(void)
|
||||||
{
|
{
|
||||||
|
pauseKeyHandlingTexts[0] = tr("do not pause live video");
|
||||||
|
pauseKeyHandlingTexts[1] = tr("confirm pause live video");
|
||||||
|
pauseKeyHandlingTexts[2] = tr("pause live video");
|
||||||
SetSection(tr("Recording"));
|
SetSection(tr("Recording"));
|
||||||
Add(new cMenuEditIntItem( tr("Setup.Recording$Margin at start (min)"), &data.MarginStart));
|
Add(new cMenuEditIntItem( tr("Setup.Recording$Margin at start (min)"), &data.MarginStart));
|
||||||
Add(new cMenuEditIntItem( tr("Setup.Recording$Margin at stop (min)"), &data.MarginStop));
|
Add(new cMenuEditIntItem( tr("Setup.Recording$Margin at stop (min)"), &data.MarginStop));
|
||||||
Add(new cMenuEditIntItem( tr("Setup.Recording$Primary limit"), &data.PrimaryLimit, 0, MAXPRIORITY));
|
Add(new cMenuEditIntItem( tr("Setup.Recording$Primary limit"), &data.PrimaryLimit, 0, MAXPRIORITY));
|
||||||
Add(new cMenuEditIntItem( tr("Setup.Recording$Default priority"), &data.DefaultPriority, 0, MAXPRIORITY));
|
Add(new cMenuEditIntItem( tr("Setup.Recording$Default priority"), &data.DefaultPriority, 0, MAXPRIORITY));
|
||||||
Add(new cMenuEditIntItem( tr("Setup.Recording$Default lifetime (d)"), &data.DefaultLifetime, 0, MAXLIFETIME));
|
Add(new cMenuEditIntItem( tr("Setup.Recording$Default lifetime (d)"), &data.DefaultLifetime, 0, MAXLIFETIME));
|
||||||
|
Add(new cMenuEditStraItem(tr("Setup.Recording$Pause key handling"), &data.PauseKeyHandling, 3, pauseKeyHandlingTexts));
|
||||||
Add(new cMenuEditIntItem( tr("Setup.Recording$Pause priority"), &data.PausePriority, 0, MAXPRIORITY));
|
Add(new cMenuEditIntItem( tr("Setup.Recording$Pause priority"), &data.PausePriority, 0, MAXPRIORITY));
|
||||||
Add(new cMenuEditIntItem( tr("Setup.Recording$Pause lifetime (d)"), &data.PauseLifetime, 0, MAXLIFETIME));
|
Add(new cMenuEditIntItem( tr("Setup.Recording$Pause lifetime (d)"), &data.PauseLifetime, 0, MAXLIFETIME));
|
||||||
Add(new cMenuEditBoolItem(tr("Setup.Recording$Use episode name"), &data.UseSubtitle));
|
Add(new cMenuEditBoolItem(tr("Setup.Recording$Use episode name"), &data.UseSubtitle));
|
||||||
|
11
osd.c
11
osd.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: osd.c 2.3 2009/05/03 13:52:47 kls Exp $
|
* $Id: osd.c 2.5 2009/05/09 10:42:35 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "osd.h"
|
#include "osd.h"
|
||||||
@ -883,7 +883,7 @@ void cOsd::Flush(void)
|
|||||||
cOsdProvider *cOsdProvider::osdProvider = NULL;
|
cOsdProvider *cOsdProvider::osdProvider = NULL;
|
||||||
int cOsdProvider::oldWidth = 0;
|
int cOsdProvider::oldWidth = 0;
|
||||||
int cOsdProvider::oldHeight = 0;
|
int cOsdProvider::oldHeight = 0;
|
||||||
int cOsdProvider::oldAspect = va4_3;
|
double cOsdProvider::oldAspect = 1.0;
|
||||||
|
|
||||||
cOsdProvider::cOsdProvider(void)
|
cOsdProvider::cOsdProvider(void)
|
||||||
{
|
{
|
||||||
@ -919,13 +919,14 @@ void cOsdProvider::UpdateOsdSize(bool Force)
|
|||||||
{
|
{
|
||||||
int Width;
|
int Width;
|
||||||
int Height;
|
int Height;
|
||||||
eVideoAspect Aspect;
|
double Aspect;
|
||||||
cDevice::PrimaryDevice()->GetVideoSize(Width, Height, Aspect);
|
cDevice::PrimaryDevice()->GetOsdSize(Width, Height, Aspect);
|
||||||
if (Width != oldWidth || Height != oldHeight || Aspect != oldAspect || Force) {
|
if (Width != oldWidth || Height != oldHeight || Aspect != oldAspect || Force) {
|
||||||
Setup.OSDLeft = int(round(Width * Setup.OSDLeftP));
|
Setup.OSDLeft = int(round(Width * Setup.OSDLeftP));
|
||||||
Setup.OSDTop = int(round(Height * Setup.OSDTopP));
|
Setup.OSDTop = int(round(Height * Setup.OSDTopP));
|
||||||
Setup.OSDWidth = int(round(Width * Setup.OSDWidthP)) & ~0x07; // OSD width must be a multiple of 8
|
Setup.OSDWidth = int(round(Width * Setup.OSDWidthP)) & ~0x07; // OSD width must be a multiple of 8
|
||||||
Setup.OSDHeight = int(round(Height * Setup.OSDHeightP));
|
Setup.OSDHeight = int(round(Height * Setup.OSDHeightP));
|
||||||
|
Setup.OSDAspect = Aspect;
|
||||||
Setup.FontOsdSize = int(round(Height * Setup.FontOsdSizeP));
|
Setup.FontOsdSize = int(round(Height * Setup.FontOsdSizeP));
|
||||||
Setup.FontFixSize = int(round(Height * Setup.FontFixSizeP));
|
Setup.FontFixSize = int(round(Height * Setup.FontFixSizeP));
|
||||||
Setup.FontSmlSize = int(round(Height * Setup.FontSmlSizeP));
|
Setup.FontSmlSize = int(round(Height * Setup.FontSmlSizeP));
|
||||||
@ -935,7 +936,7 @@ void cOsdProvider::UpdateOsdSize(bool Force)
|
|||||||
oldWidth = Width;
|
oldWidth = Width;
|
||||||
oldHeight = Height;
|
oldHeight = Height;
|
||||||
oldAspect = Aspect;
|
oldAspect = Aspect;
|
||||||
dsyslog("OSD size changed to %dx%d @ %s", Width, Height, VideoAspectString[Aspect]);
|
dsyslog("OSD size changed to %dx%d @ %g", Width, Height, Aspect);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
4
osd.h
4
osd.h
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: osd.h 2.3 2009/05/03 13:52:10 kls Exp $
|
* $Id: osd.h 2.4 2009/05/08 13:41:03 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __OSD_H
|
#ifndef __OSD_H
|
||||||
@ -408,7 +408,7 @@ private:
|
|||||||
static cOsdProvider *osdProvider;
|
static cOsdProvider *osdProvider;
|
||||||
static int oldWidth;
|
static int oldWidth;
|
||||||
static int oldHeight;
|
static int oldHeight;
|
||||||
static int oldAspect;
|
static double oldAspect;
|
||||||
protected:
|
protected:
|
||||||
virtual cOsd *CreateOsd(int Left, int Top, uint Level) = 0;
|
virtual cOsd *CreateOsd(int Left, int Top, uint Level) = 0;
|
||||||
///< Returns a pointer to a newly created cOsd object, which will be located
|
///< Returns a pointer to a newly created cOsd object, which will be located
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: osdbase.c 2.0 2008/02/17 11:33:04 kls Exp $
|
* $Id: osdbase.c 2.1 2009/06/01 11:54:50 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "osdbase.h"
|
#include "osdbase.h"
|
||||||
@ -217,6 +217,7 @@ void cOsdMenu::Display(void)
|
|||||||
}
|
}
|
||||||
if (current < 0)
|
if (current < 0)
|
||||||
current = 0; // just for safety - there HAS to be a current item!
|
current = 0; // just for safety - there HAS to be a current item!
|
||||||
|
first = min(first, max(0, count - displayMenuItems)); // in case the menu size has changed
|
||||||
if (current - first >= displayMenuItems || current < first) {
|
if (current - first >= displayMenuItems || current < first) {
|
||||||
first = current - displayMenuItems / 2;
|
first = current - displayMenuItems / 2;
|
||||||
if (first + displayMenuItems > count)
|
if (first + displayMenuItems > count)
|
||||||
|
17
po/ca_ES.po
17
po/ca_ES.po
@ -10,7 +10,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
||||||
"POT-Creation-Date: 2008-12-14 16:10+0100\n"
|
"POT-Creation-Date: 2009-05-21 13:18+0200\n"
|
||||||
"PO-Revision-Date: 2008-03-02 19:02+0100\n"
|
"PO-Revision-Date: 2008-03-02 19:02+0100\n"
|
||||||
"Last-Translator: Luca Olivetti <luca@ventoso.org>\n"
|
"Last-Translator: Luca Olivetti <luca@ventoso.org>\n"
|
||||||
"Language-Team: Catalanian\n"
|
"Language-Team: Catalanian\n"
|
||||||
@ -707,6 +707,15 @@ msgstr "CAM en
|
|||||||
msgid "Can't reset CAM!"
|
msgid "Can't reset CAM!"
|
||||||
msgstr "No puc reiniciar la CAM!"
|
msgstr "No puc reiniciar la CAM!"
|
||||||
|
|
||||||
|
msgid "do not pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "confirm pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Recording"
|
msgid "Recording"
|
||||||
msgstr "Opcions de Gravació"
|
msgstr "Opcions de Gravació"
|
||||||
|
|
||||||
@ -725,6 +734,9 @@ msgstr "Prioritat per defecte"
|
|||||||
msgid "Setup.Recording$Default lifetime (d)"
|
msgid "Setup.Recording$Default lifetime (d)"
|
||||||
msgstr "Durada predefinida"
|
msgstr "Durada predefinida"
|
||||||
|
|
||||||
|
msgid "Setup.Recording$Pause key handling"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.Recording$Pause priority"
|
msgid "Setup.Recording$Pause priority"
|
||||||
msgstr "Prioritat de la pausa"
|
msgstr "Prioritat de la pausa"
|
||||||
|
|
||||||
@ -986,6 +998,9 @@ msgstr "Diumenge"
|
|||||||
msgid "Upcoming recording!"
|
msgid "Upcoming recording!"
|
||||||
msgstr "Gravació a punt d'iniciar!"
|
msgstr "Gravació a punt d'iniciar!"
|
||||||
|
|
||||||
|
msgid "Pause live video?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Recording started"
|
msgid "Recording started"
|
||||||
msgstr "Gravació començada"
|
msgstr "Gravació començada"
|
||||||
|
|
||||||
|
17
po/cs_CZ.po
17
po/cs_CZ.po
@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
||||||
"POT-Creation-Date: 2008-12-14 16:10+0100\n"
|
"POT-Creation-Date: 2009-05-21 13:18+0200\n"
|
||||||
"PO-Revision-Date: 2008-02-28 15:00+0200\n"
|
"PO-Revision-Date: 2008-02-28 15:00+0200\n"
|
||||||
"Last-Translator: Vladimír Bárta <vladimir.barta@k2atmitec.cz>, Jiøí Dobrý <jdobry@centrum.cz>\n"
|
"Last-Translator: Vladimír Bárta <vladimir.barta@k2atmitec.cz>, Jiøí Dobrý <jdobry@centrum.cz>\n"
|
||||||
"Language-Team: Czech\n"
|
"Language-Team: Czech\n"
|
||||||
@ -705,6 +705,15 @@ msgstr "CAM se pou
|
|||||||
msgid "Can't reset CAM!"
|
msgid "Can't reset CAM!"
|
||||||
msgstr "CAM modul nelze restartovat!"
|
msgstr "CAM modul nelze restartovat!"
|
||||||
|
|
||||||
|
msgid "do not pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "confirm pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Recording"
|
msgid "Recording"
|
||||||
msgstr "Nahrávání"
|
msgstr "Nahrávání"
|
||||||
|
|
||||||
@ -723,6 +732,9 @@ msgstr "V
|
|||||||
msgid "Setup.Recording$Default lifetime (d)"
|
msgid "Setup.Recording$Default lifetime (d)"
|
||||||
msgstr "Výchozí ¾ivotnost"
|
msgstr "Výchozí ¾ivotnost"
|
||||||
|
|
||||||
|
msgid "Setup.Recording$Pause key handling"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.Recording$Pause priority"
|
msgid "Setup.Recording$Pause priority"
|
||||||
msgstr "Priorita pøeru¹ení"
|
msgstr "Priorita pøeru¹ení"
|
||||||
|
|
||||||
@ -984,6 +996,9 @@ msgstr "Ned
|
|||||||
msgid "Upcoming recording!"
|
msgid "Upcoming recording!"
|
||||||
msgstr "Brzo zaène nahrávání!"
|
msgstr "Brzo zaène nahrávání!"
|
||||||
|
|
||||||
|
msgid "Pause live video?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Recording started"
|
msgid "Recording started"
|
||||||
msgstr "Zaèalo nahrávání"
|
msgstr "Zaèalo nahrávání"
|
||||||
|
|
||||||
|
17
po/da_DK.po
17
po/da_DK.po
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
||||||
"POT-Creation-Date: 2008-12-14 16:10+0100\n"
|
"POT-Creation-Date: 2009-05-21 13:18+0200\n"
|
||||||
"PO-Revision-Date: 2007-08-12 14:17+0200\n"
|
"PO-Revision-Date: 2007-08-12 14:17+0200\n"
|
||||||
"Last-Translator: Mogens Elneff <mogens@elneff.dk>\n"
|
"Last-Translator: Mogens Elneff <mogens@elneff.dk>\n"
|
||||||
"Language-Team: Danish\n"
|
"Language-Team: Danish\n"
|
||||||
@ -704,6 +704,15 @@ msgstr "CAM er i brug - virkelig nulstille?"
|
|||||||
msgid "Can't reset CAM!"
|
msgid "Can't reset CAM!"
|
||||||
msgstr "Kan ikke nulstille CAM!"
|
msgstr "Kan ikke nulstille CAM!"
|
||||||
|
|
||||||
|
msgid "do not pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "confirm pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Recording"
|
msgid "Recording"
|
||||||
msgstr "Optagelse"
|
msgstr "Optagelse"
|
||||||
|
|
||||||
@ -722,6 +731,9 @@ msgstr "Standard prioritet"
|
|||||||
msgid "Setup.Recording$Default lifetime (d)"
|
msgid "Setup.Recording$Default lifetime (d)"
|
||||||
msgstr "Standard levetid (d)"
|
msgstr "Standard levetid (d)"
|
||||||
|
|
||||||
|
msgid "Setup.Recording$Pause key handling"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.Recording$Pause priority"
|
msgid "Setup.Recording$Pause priority"
|
||||||
msgstr "Pause prioritet"
|
msgstr "Pause prioritet"
|
||||||
|
|
||||||
@ -983,6 +995,9 @@ msgstr "S
|
|||||||
msgid "Upcoming recording!"
|
msgid "Upcoming recording!"
|
||||||
msgstr "Optagelse starter snart!"
|
msgstr "Optagelse starter snart!"
|
||||||
|
|
||||||
|
msgid "Pause live video?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Recording started"
|
msgid "Recording started"
|
||||||
msgstr "Optagelse startet"
|
msgstr "Optagelse startet"
|
||||||
|
|
||||||
|
17
po/de_DE.po
17
po/de_DE.po
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
||||||
"POT-Creation-Date: 2008-12-14 16:10+0100\n"
|
"POT-Creation-Date: 2009-05-21 13:18+0200\n"
|
||||||
"PO-Revision-Date: 2007-11-25 15:19+0200\n"
|
"PO-Revision-Date: 2007-11-25 15:19+0200\n"
|
||||||
"Last-Translator: Klaus Schmidinger <kls@cadsoft.de>\n"
|
"Last-Translator: Klaus Schmidinger <kls@cadsoft.de>\n"
|
||||||
"Language-Team: German\n"
|
"Language-Team: German\n"
|
||||||
@ -704,6 +704,15 @@ msgstr "CAM wird benutzt - wirklich zur
|
|||||||
msgid "Can't reset CAM!"
|
msgid "Can't reset CAM!"
|
||||||
msgstr "Zurücksetzen des CAM fehlgeschlagen!"
|
msgstr "Zurücksetzen des CAM fehlgeschlagen!"
|
||||||
|
|
||||||
|
msgid "do not pause live video"
|
||||||
|
msgstr "Live-Signal nicht anhalten"
|
||||||
|
|
||||||
|
msgid "confirm pause live video"
|
||||||
|
msgstr "Anhalten des Live-Signals bestätigen"
|
||||||
|
|
||||||
|
msgid "pause live video"
|
||||||
|
msgstr "Live-Signal anhalten"
|
||||||
|
|
||||||
msgid "Recording"
|
msgid "Recording"
|
||||||
msgstr "Aufnahme"
|
msgstr "Aufnahme"
|
||||||
|
|
||||||
@ -722,6 +731,9 @@ msgstr "Default-Priorit
|
|||||||
msgid "Setup.Recording$Default lifetime (d)"
|
msgid "Setup.Recording$Default lifetime (d)"
|
||||||
msgstr "Default-Lebensdauer (d)"
|
msgstr "Default-Lebensdauer (d)"
|
||||||
|
|
||||||
|
msgid "Setup.Recording$Pause key handling"
|
||||||
|
msgstr "Funktion der Pause-Taste"
|
||||||
|
|
||||||
msgid "Setup.Recording$Pause priority"
|
msgid "Setup.Recording$Pause priority"
|
||||||
msgstr "Pause-Priorität"
|
msgstr "Pause-Priorität"
|
||||||
|
|
||||||
@ -983,6 +995,9 @@ msgstr "Sonntag"
|
|||||||
msgid "Upcoming recording!"
|
msgid "Upcoming recording!"
|
||||||
msgstr "Aufnahme beginnt in Kürze!"
|
msgstr "Aufnahme beginnt in Kürze!"
|
||||||
|
|
||||||
|
msgid "Pause live video?"
|
||||||
|
msgstr "Live-Signal anhalten?"
|
||||||
|
|
||||||
msgid "Recording started"
|
msgid "Recording started"
|
||||||
msgstr "Aufzeichnung gestartet"
|
msgstr "Aufzeichnung gestartet"
|
||||||
|
|
||||||
|
17
po/el_GR.po
17
po/el_GR.po
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
||||||
"POT-Creation-Date: 2008-12-14 16:10+0100\n"
|
"POT-Creation-Date: 2009-05-21 13:18+0200\n"
|
||||||
"PO-Revision-Date: 2007-08-12 14:17+0200\n"
|
"PO-Revision-Date: 2007-08-12 14:17+0200\n"
|
||||||
"Last-Translator: Dimitrios Dimitrakos <mail@dimitrios.de>\n"
|
"Last-Translator: Dimitrios Dimitrakos <mail@dimitrios.de>\n"
|
||||||
"Language-Team: Greek\n"
|
"Language-Team: Greek\n"
|
||||||
@ -704,6 +704,15 @@ msgstr ""
|
|||||||
msgid "Can't reset CAM!"
|
msgid "Can't reset CAM!"
|
||||||
msgstr "Áäýíáôç ç åðáíáöïñÜ óôü CAM"
|
msgstr "Áäýíáôç ç åðáíáöïñÜ óôü CAM"
|
||||||
|
|
||||||
|
msgid "do not pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "confirm pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Recording"
|
msgid "Recording"
|
||||||
msgstr "ÅããñáöÞ"
|
msgstr "ÅããñáöÞ"
|
||||||
|
|
||||||
@ -722,6 +731,9 @@ msgstr "
|
|||||||
msgid "Setup.Recording$Default lifetime (d)"
|
msgid "Setup.Recording$Default lifetime (d)"
|
||||||
msgstr "ÐñïêáèïñéóìÝíç äéÜñêåéá ðáñáìïíÞò (ÇìÝñåò)"
|
msgstr "ÐñïêáèïñéóìÝíç äéÜñêåéá ðáñáìïíÞò (ÇìÝñåò)"
|
||||||
|
|
||||||
|
msgid "Setup.Recording$Pause key handling"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.Recording$Pause priority"
|
msgid "Setup.Recording$Pause priority"
|
||||||
msgstr "Ðñïôåñáéüôçôá äéáëåßììáôïò"
|
msgstr "Ðñïôåñáéüôçôá äéáëåßììáôïò"
|
||||||
|
|
||||||
@ -983,6 +995,9 @@ msgstr "
|
|||||||
msgid "Upcoming recording!"
|
msgid "Upcoming recording!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Pause live video?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Recording started"
|
msgid "Recording started"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
17
po/es_ES.po
17
po/es_ES.po
@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
||||||
"POT-Creation-Date: 2008-12-14 16:10+0100\n"
|
"POT-Creation-Date: 2009-05-21 13:18+0200\n"
|
||||||
"PO-Revision-Date: 2008-03-02 19:02+0100\n"
|
"PO-Revision-Date: 2008-03-02 19:02+0100\n"
|
||||||
"Last-Translator: Luca Olivetti <luca@ventoso.org>\n"
|
"Last-Translator: Luca Olivetti <luca@ventoso.org>\n"
|
||||||
"Language-Team: Spanish\n"
|
"Language-Team: Spanish\n"
|
||||||
@ -705,6 +705,15 @@ msgstr "CAM en uso -
|
|||||||
msgid "Can't reset CAM!"
|
msgid "Can't reset CAM!"
|
||||||
msgstr "¡No se puede reiniciar CAM!"
|
msgstr "¡No se puede reiniciar CAM!"
|
||||||
|
|
||||||
|
msgid "do not pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "confirm pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Recording"
|
msgid "Recording"
|
||||||
msgstr "Opciones de grabación"
|
msgstr "Opciones de grabación"
|
||||||
|
|
||||||
@ -723,6 +732,9 @@ msgstr "Prioridad por defecto"
|
|||||||
msgid "Setup.Recording$Default lifetime (d)"
|
msgid "Setup.Recording$Default lifetime (d)"
|
||||||
msgstr "Duración por defecto (días)"
|
msgstr "Duración por defecto (días)"
|
||||||
|
|
||||||
|
msgid "Setup.Recording$Pause key handling"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.Recording$Pause priority"
|
msgid "Setup.Recording$Pause priority"
|
||||||
msgstr "Prioridad en modo pausa"
|
msgstr "Prioridad en modo pausa"
|
||||||
|
|
||||||
@ -984,6 +996,9 @@ msgstr "Domingo"
|
|||||||
msgid "Upcoming recording!"
|
msgid "Upcoming recording!"
|
||||||
msgstr "¡Grabación a punto de empezar!"
|
msgstr "¡Grabación a punto de empezar!"
|
||||||
|
|
||||||
|
msgid "Pause live video?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Recording started"
|
msgid "Recording started"
|
||||||
msgstr "Iniciando grabación"
|
msgstr "Iniciando grabación"
|
||||||
|
|
||||||
|
17
po/et_EE.po
17
po/et_EE.po
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
||||||
"POT-Creation-Date: 2008-12-14 16:10+0100\n"
|
"POT-Creation-Date: 2009-05-21 13:18+0200\n"
|
||||||
"PO-Revision-Date: 2007-08-12 14:17+0200\n"
|
"PO-Revision-Date: 2007-08-12 14:17+0200\n"
|
||||||
"Last-Translator: Arthur Konovalov <kasjas@hot.ee>\n"
|
"Last-Translator: Arthur Konovalov <kasjas@hot.ee>\n"
|
||||||
"Language-Team: Estonian\n"
|
"Language-Team: Estonian\n"
|
||||||
@ -704,6 +704,15 @@ msgstr "CAM on kasutuses - taask
|
|||||||
msgid "Can't reset CAM!"
|
msgid "Can't reset CAM!"
|
||||||
msgstr "CAM mooduli taaskäivitus ebaõnnestus!"
|
msgstr "CAM mooduli taaskäivitus ebaõnnestus!"
|
||||||
|
|
||||||
|
msgid "do not pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "confirm pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Recording"
|
msgid "Recording"
|
||||||
msgstr "Salvestamine"
|
msgstr "Salvestamine"
|
||||||
|
|
||||||
@ -722,6 +731,9 @@ msgstr "Vaikimisi prioriteet"
|
|||||||
msgid "Setup.Recording$Default lifetime (d)"
|
msgid "Setup.Recording$Default lifetime (d)"
|
||||||
msgstr "Salvestuse eluiga (päevi)"
|
msgstr "Salvestuse eluiga (päevi)"
|
||||||
|
|
||||||
|
msgid "Setup.Recording$Pause key handling"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.Recording$Pause priority"
|
msgid "Setup.Recording$Pause priority"
|
||||||
msgstr "Pausi prioriteet"
|
msgstr "Pausi prioriteet"
|
||||||
|
|
||||||
@ -983,6 +995,9 @@ msgstr "P
|
|||||||
msgid "Upcoming recording!"
|
msgid "Upcoming recording!"
|
||||||
msgstr "Salvestamine tulekul!"
|
msgstr "Salvestamine tulekul!"
|
||||||
|
|
||||||
|
msgid "Pause live video?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Recording started"
|
msgid "Recording started"
|
||||||
msgstr "Salvestamine algas"
|
msgstr "Salvestamine algas"
|
||||||
|
|
||||||
|
17
po/fi_FI.po
17
po/fi_FI.po
@ -10,7 +10,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
||||||
"POT-Creation-Date: 2008-12-14 16:10+0100\n"
|
"POT-Creation-Date: 2009-05-21 13:18+0200\n"
|
||||||
"PO-Revision-Date: 2007-08-15 15:52+0200\n"
|
"PO-Revision-Date: 2007-08-15 15:52+0200\n"
|
||||||
"Last-Translator: Rolf Ahrenberg <rahrenbe@cc.hut.fi>\n"
|
"Last-Translator: Rolf Ahrenberg <rahrenbe@cc.hut.fi>\n"
|
||||||
"Language-Team: Finnish\n"
|
"Language-Team: Finnish\n"
|
||||||
@ -707,6 +707,15 @@ msgstr "CA-moduuli k
|
|||||||
msgid "Can't reset CAM!"
|
msgid "Can't reset CAM!"
|
||||||
msgstr "CA-moduulin nollaus epäonnistui!"
|
msgstr "CA-moduulin nollaus epäonnistui!"
|
||||||
|
|
||||||
|
msgid "do not pause live video"
|
||||||
|
msgstr "älä pysäytä lähetystä"
|
||||||
|
|
||||||
|
msgid "confirm pause live video"
|
||||||
|
msgstr "varmista lähetyksen pysäyttäminen"
|
||||||
|
|
||||||
|
msgid "pause live video"
|
||||||
|
msgstr "pysäytä lähetys"
|
||||||
|
|
||||||
msgid "Recording"
|
msgid "Recording"
|
||||||
msgstr "Tallennus"
|
msgstr "Tallennus"
|
||||||
|
|
||||||
@ -725,6 +734,9 @@ msgstr "Tallenteen oletusprioriteetti"
|
|||||||
msgid "Setup.Recording$Default lifetime (d)"
|
msgid "Setup.Recording$Default lifetime (d)"
|
||||||
msgstr "Tallenteen oletuselinikä (d)"
|
msgstr "Tallenteen oletuselinikä (d)"
|
||||||
|
|
||||||
|
msgid "Setup.Recording$Pause key handling"
|
||||||
|
msgstr "Taukonäppäimen toiminta"
|
||||||
|
|
||||||
msgid "Setup.Recording$Pause priority"
|
msgid "Setup.Recording$Pause priority"
|
||||||
msgstr "Taukotallenteen prioriteetti"
|
msgstr "Taukotallenteen prioriteetti"
|
||||||
|
|
||||||
@ -986,6 +998,9 @@ msgstr "Sunnuntai"
|
|||||||
msgid "Upcoming recording!"
|
msgid "Upcoming recording!"
|
||||||
msgstr "Tallennus on alkamassa!"
|
msgstr "Tallennus on alkamassa!"
|
||||||
|
|
||||||
|
msgid "Pause live video?"
|
||||||
|
msgstr "Pysäytetäänkö lähetys?"
|
||||||
|
|
||||||
msgid "Recording started"
|
msgid "Recording started"
|
||||||
msgstr "Tallennus aloitettu"
|
msgstr "Tallennus aloitettu"
|
||||||
|
|
||||||
|
17
po/fr_FR.po
17
po/fr_FR.po
@ -13,7 +13,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
||||||
"POT-Creation-Date: 2008-12-14 16:10+0100\n"
|
"POT-Creation-Date: 2009-05-21 13:18+0200\n"
|
||||||
"PO-Revision-Date: 2008-02-27 18:14+0100\n"
|
"PO-Revision-Date: 2008-02-27 18:14+0100\n"
|
||||||
"Last-Translator: Jean-Claude Repetto <jc@repetto.org>\n"
|
"Last-Translator: Jean-Claude Repetto <jc@repetto.org>\n"
|
||||||
"Language-Team: French\n"
|
"Language-Team: French\n"
|
||||||
@ -710,6 +710,15 @@ msgstr "CAM en cours d'utilisation - Remettre
|
|||||||
msgid "Can't reset CAM!"
|
msgid "Can't reset CAM!"
|
||||||
msgstr "Impossible de réinitialiser le CAM !"
|
msgstr "Impossible de réinitialiser le CAM !"
|
||||||
|
|
||||||
|
msgid "do not pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "confirm pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Recording"
|
msgid "Recording"
|
||||||
msgstr "Enregistrement"
|
msgstr "Enregistrement"
|
||||||
|
|
||||||
@ -728,6 +737,9 @@ msgstr "Priorit
|
|||||||
msgid "Setup.Recording$Default lifetime (d)"
|
msgid "Setup.Recording$Default lifetime (d)"
|
||||||
msgstr "Durée de vie par défaut (j)"
|
msgstr "Durée de vie par défaut (j)"
|
||||||
|
|
||||||
|
msgid "Setup.Recording$Pause key handling"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.Recording$Pause priority"
|
msgid "Setup.Recording$Pause priority"
|
||||||
msgstr "Priorité des pauses"
|
msgstr "Priorité des pauses"
|
||||||
|
|
||||||
@ -989,6 +1001,9 @@ msgstr "Dimanche"
|
|||||||
msgid "Upcoming recording!"
|
msgid "Upcoming recording!"
|
||||||
msgstr "L'enregistrement va commencer !"
|
msgstr "L'enregistrement va commencer !"
|
||||||
|
|
||||||
|
msgid "Pause live video?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Recording started"
|
msgid "Recording started"
|
||||||
msgstr "L'enregistrement a commencé"
|
msgstr "L'enregistrement a commencé"
|
||||||
|
|
||||||
|
17
po/hr_HR.po
17
po/hr_HR.po
@ -9,7 +9,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
||||||
"POT-Creation-Date: 2008-12-14 16:10+0100\n"
|
"POT-Creation-Date: 2009-05-21 13:18+0200\n"
|
||||||
"PO-Revision-Date: 2008-03-17 19:00+0100\n"
|
"PO-Revision-Date: 2008-03-17 19:00+0100\n"
|
||||||
"Last-Translator: Adrian Caval <anrxc@sysphere.org>\n"
|
"Last-Translator: Adrian Caval <anrxc@sysphere.org>\n"
|
||||||
"Language-Team: Croatian\n"
|
"Language-Team: Croatian\n"
|
||||||
@ -706,6 +706,15 @@ msgstr "CAM se koristi - ponovno pokrenuti unato
|
|||||||
msgid "Can't reset CAM!"
|
msgid "Can't reset CAM!"
|
||||||
msgstr "Ponovno pokretanje CAM-a neuspje¹no!"
|
msgstr "Ponovno pokretanje CAM-a neuspje¹no!"
|
||||||
|
|
||||||
|
msgid "do not pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "confirm pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Recording"
|
msgid "Recording"
|
||||||
msgstr "Snimanje"
|
msgstr "Snimanje"
|
||||||
|
|
||||||
@ -724,6 +733,9 @@ msgstr "Zadani prioritet"
|
|||||||
msgid "Setup.Recording$Default lifetime (d)"
|
msgid "Setup.Recording$Default lifetime (d)"
|
||||||
msgstr "Zadano trajanje (d)"
|
msgstr "Zadano trajanje (d)"
|
||||||
|
|
||||||
|
msgid "Setup.Recording$Pause key handling"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.Recording$Pause priority"
|
msgid "Setup.Recording$Pause priority"
|
||||||
msgstr "Prioritet pauze"
|
msgstr "Prioritet pauze"
|
||||||
|
|
||||||
@ -985,6 +997,9 @@ msgstr "Nedjelja"
|
|||||||
msgid "Upcoming recording!"
|
msgid "Upcoming recording!"
|
||||||
msgstr "Obnovljena snimka!"
|
msgstr "Obnovljena snimka!"
|
||||||
|
|
||||||
|
msgid "Pause live video?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Recording started"
|
msgid "Recording started"
|
||||||
msgstr "Snimanje zapoèelo"
|
msgstr "Snimanje zapoèelo"
|
||||||
|
|
||||||
|
17
po/hu_HU.po
17
po/hu_HU.po
@ -10,7 +10,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
||||||
"POT-Creation-Date: 2008-12-14 16:10+0100\n"
|
"POT-Creation-Date: 2009-05-21 13:18+0200\n"
|
||||||
"PO-Revision-Date: 2007-12-01 21:42+0200\n"
|
"PO-Revision-Date: 2007-12-01 21:42+0200\n"
|
||||||
"Last-Translator: István Füley <ifuley@tigercomp.ro>\n"
|
"Last-Translator: István Füley <ifuley@tigercomp.ro>\n"
|
||||||
"Language-Team: Hungarian\n"
|
"Language-Team: Hungarian\n"
|
||||||
@ -707,6 +707,15 @@ msgstr "CAM haszn
|
|||||||
msgid "Can't reset CAM!"
|
msgid "Can't reset CAM!"
|
||||||
msgstr "A CAM újraindítás nem sikerült"
|
msgstr "A CAM újraindítás nem sikerült"
|
||||||
|
|
||||||
|
msgid "do not pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "confirm pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Recording"
|
msgid "Recording"
|
||||||
msgstr "Felvétel"
|
msgstr "Felvétel"
|
||||||
|
|
||||||
@ -725,6 +734,9 @@ msgstr "Alap
|
|||||||
msgid "Setup.Recording$Default lifetime (d)"
|
msgid "Setup.Recording$Default lifetime (d)"
|
||||||
msgstr "Alapértelmezett élettartam"
|
msgstr "Alapértelmezett élettartam"
|
||||||
|
|
||||||
|
msgid "Setup.Recording$Pause key handling"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.Recording$Pause priority"
|
msgid "Setup.Recording$Pause priority"
|
||||||
msgstr "Szünet prioritás"
|
msgstr "Szünet prioritás"
|
||||||
|
|
||||||
@ -986,6 +998,9 @@ msgstr "Vas
|
|||||||
msgid "Upcoming recording!"
|
msgid "Upcoming recording!"
|
||||||
msgstr "Felvétel rögtön kezdõdik!"
|
msgstr "Felvétel rögtön kezdõdik!"
|
||||||
|
|
||||||
|
msgid "Pause live video?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Recording started"
|
msgid "Recording started"
|
||||||
msgstr "A felvétel elindítva"
|
msgstr "A felvétel elindítva"
|
||||||
|
|
||||||
|
17
po/it_IT.po
17
po/it_IT.po
@ -11,7 +11,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
||||||
"POT-Creation-Date: 2008-12-14 16:10+0100\n"
|
"POT-Creation-Date: 2009-05-21 13:18+0200\n"
|
||||||
"PO-Revision-Date: 2009-02-08 18:58+0100\n"
|
"PO-Revision-Date: 2009-02-08 18:58+0100\n"
|
||||||
"Last-Translator: Diego Pierotto <vdr-italian@tiscali.it>\n"
|
"Last-Translator: Diego Pierotto <vdr-italian@tiscali.it>\n"
|
||||||
"Language-Team: Italian\n"
|
"Language-Team: Italian\n"
|
||||||
@ -711,6 +711,15 @@ msgstr "La CAM è in uso - vuoi reimpostarla?"
|
|||||||
msgid "Can't reset CAM!"
|
msgid "Can't reset CAM!"
|
||||||
msgstr "Impossibile reimpostare il modulo CAM!"
|
msgstr "Impossibile reimpostare il modulo CAM!"
|
||||||
|
|
||||||
|
msgid "do not pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "confirm pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Recording"
|
msgid "Recording"
|
||||||
msgstr "Registrazione"
|
msgstr "Registrazione"
|
||||||
|
|
||||||
@ -729,6 +738,9 @@ msgstr "Priorità predefinita"
|
|||||||
msgid "Setup.Recording$Default lifetime (d)"
|
msgid "Setup.Recording$Default lifetime (d)"
|
||||||
msgstr "Scadenza predefinita (gg)"
|
msgstr "Scadenza predefinita (gg)"
|
||||||
|
|
||||||
|
msgid "Setup.Recording$Pause key handling"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.Recording$Pause priority"
|
msgid "Setup.Recording$Pause priority"
|
||||||
msgstr "Priorità di pausa"
|
msgstr "Priorità di pausa"
|
||||||
|
|
||||||
@ -990,6 +1002,9 @@ msgstr "Domenica"
|
|||||||
msgid "Upcoming recording!"
|
msgid "Upcoming recording!"
|
||||||
msgstr "Registrazione imminente!"
|
msgstr "Registrazione imminente!"
|
||||||
|
|
||||||
|
msgid "Pause live video?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Recording started"
|
msgid "Recording started"
|
||||||
msgstr "Registrazione avviata"
|
msgstr "Registrazione avviata"
|
||||||
|
|
||||||
|
17
po/nl_NL.po
17
po/nl_NL.po
@ -11,7 +11,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
||||||
"POT-Creation-Date: 2008-12-14 16:10+0100\n"
|
"POT-Creation-Date: 2009-05-21 13:18+0200\n"
|
||||||
"PO-Revision-Date: 2008-02-26 17:20+0100\n"
|
"PO-Revision-Date: 2008-02-26 17:20+0100\n"
|
||||||
"Last-Translator: Johan Schuring <johan.schuring@vetteblei.nl>\n"
|
"Last-Translator: Johan Schuring <johan.schuring@vetteblei.nl>\n"
|
||||||
"Language-Team: Dutch\n"
|
"Language-Team: Dutch\n"
|
||||||
@ -708,6 +708,15 @@ msgstr "CAM wordt gebruikt - werkelijk herstarten?"
|
|||||||
msgid "Can't reset CAM!"
|
msgid "Can't reset CAM!"
|
||||||
msgstr "Kan CAM niet herstarten!"
|
msgstr "Kan CAM niet herstarten!"
|
||||||
|
|
||||||
|
msgid "do not pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "confirm pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Recording"
|
msgid "Recording"
|
||||||
msgstr "Opname"
|
msgstr "Opname"
|
||||||
|
|
||||||
@ -726,6 +735,9 @@ msgstr "Standaard prioriteit"
|
|||||||
msgid "Setup.Recording$Default lifetime (d)"
|
msgid "Setup.Recording$Default lifetime (d)"
|
||||||
msgstr "Standaard levensduur (d)"
|
msgstr "Standaard levensduur (d)"
|
||||||
|
|
||||||
|
msgid "Setup.Recording$Pause key handling"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.Recording$Pause priority"
|
msgid "Setup.Recording$Pause priority"
|
||||||
msgstr "Pauze prioriteit"
|
msgstr "Pauze prioriteit"
|
||||||
|
|
||||||
@ -987,6 +999,9 @@ msgstr "Zondag"
|
|||||||
msgid "Upcoming recording!"
|
msgid "Upcoming recording!"
|
||||||
msgstr "Opname start binnenkort!"
|
msgstr "Opname start binnenkort!"
|
||||||
|
|
||||||
|
msgid "Pause live video?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Recording started"
|
msgid "Recording started"
|
||||||
msgstr "Opname is gestart!"
|
msgstr "Opname is gestart!"
|
||||||
|
|
||||||
|
17
po/nn_NO.po
17
po/nn_NO.po
@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
||||||
"POT-Creation-Date: 2008-12-14 16:10+0100\n"
|
"POT-Creation-Date: 2009-05-21 13:18+0200\n"
|
||||||
"PO-Revision-Date: 2007-08-12 14:17+0200\n"
|
"PO-Revision-Date: 2007-08-12 14:17+0200\n"
|
||||||
"Last-Translator: Truls Slevigen <truls@slevigen.no>\n"
|
"Last-Translator: Truls Slevigen <truls@slevigen.no>\n"
|
||||||
"Language-Team: Norwegian\n"
|
"Language-Team: Norwegian\n"
|
||||||
@ -705,6 +705,15 @@ msgstr ""
|
|||||||
msgid "Can't reset CAM!"
|
msgid "Can't reset CAM!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "do not pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "confirm pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Recording"
|
msgid "Recording"
|
||||||
msgstr "Opptak"
|
msgstr "Opptak"
|
||||||
|
|
||||||
@ -723,6 +732,9 @@ msgstr "Normal prioritet (Timer)"
|
|||||||
msgid "Setup.Recording$Default lifetime (d)"
|
msgid "Setup.Recording$Default lifetime (d)"
|
||||||
msgstr "Normal levetid timer (d)"
|
msgstr "Normal levetid timer (d)"
|
||||||
|
|
||||||
|
msgid "Setup.Recording$Pause key handling"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.Recording$Pause priority"
|
msgid "Setup.Recording$Pause priority"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -984,6 +996,9 @@ msgstr "S
|
|||||||
msgid "Upcoming recording!"
|
msgid "Upcoming recording!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Pause live video?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Recording started"
|
msgid "Recording started"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
17
po/pl_PL.po
17
po/pl_PL.po
@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
||||||
"POT-Creation-Date: 2008-12-14 16:10+0100\n"
|
"POT-Creation-Date: 2009-05-21 13:18+0200\n"
|
||||||
"PO-Revision-Date: 2008-03-09 12:59+0100\n"
|
"PO-Revision-Date: 2008-03-09 12:59+0100\n"
|
||||||
"Last-Translator: Michael Rakowski <mrak@gmx.de>\n"
|
"Last-Translator: Michael Rakowski <mrak@gmx.de>\n"
|
||||||
"Language-Team: Polish\n"
|
"Language-Team: Polish\n"
|
||||||
@ -705,6 +705,15 @@ msgstr "CAM jest w u
|
|||||||
msgid "Can't reset CAM!"
|
msgid "Can't reset CAM!"
|
||||||
msgstr "Nie mo¿na zresetowaæ CAM!"
|
msgstr "Nie mo¿na zresetowaæ CAM!"
|
||||||
|
|
||||||
|
msgid "do not pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "confirm pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Recording"
|
msgid "Recording"
|
||||||
msgstr "Nagranie"
|
msgstr "Nagranie"
|
||||||
|
|
||||||
@ -723,6 +732,9 @@ msgstr "Domy
|
|||||||
msgid "Setup.Recording$Default lifetime (d)"
|
msgid "Setup.Recording$Default lifetime (d)"
|
||||||
msgstr "Domy¶lny czas ¿ycia (d)"
|
msgstr "Domy¶lny czas ¿ycia (d)"
|
||||||
|
|
||||||
|
msgid "Setup.Recording$Pause key handling"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.Recording$Pause priority"
|
msgid "Setup.Recording$Pause priority"
|
||||||
msgstr "Priorytet pauzy"
|
msgstr "Priorytet pauzy"
|
||||||
|
|
||||||
@ -984,6 +996,9 @@ msgstr "Niedziela"
|
|||||||
msgid "Upcoming recording!"
|
msgid "Upcoming recording!"
|
||||||
msgstr "Wkrótce nagranie!"
|
msgstr "Wkrótce nagranie!"
|
||||||
|
|
||||||
|
msgid "Pause live video?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Recording started"
|
msgid "Recording started"
|
||||||
msgstr "Rozpoczêto nagrywanie"
|
msgstr "Rozpoczêto nagrywanie"
|
||||||
|
|
||||||
|
17
po/pt_PT.po
17
po/pt_PT.po
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
||||||
"POT-Creation-Date: 2008-12-14 16:10+0100\n"
|
"POT-Creation-Date: 2009-05-21 13:18+0200\n"
|
||||||
"PO-Revision-Date: 2008-03-18 17:04+0100\n"
|
"PO-Revision-Date: 2008-03-18 17:04+0100\n"
|
||||||
"Last-Translator: anonymous\n"
|
"Last-Translator: anonymous\n"
|
||||||
"Language-Team: Portuguese\n"
|
"Language-Team: Portuguese\n"
|
||||||
@ -704,6 +704,15 @@ msgstr "CAM em uso - quer mesmo reiniciar?"
|
|||||||
msgid "Can't reset CAM!"
|
msgid "Can't reset CAM!"
|
||||||
msgstr "Não é possível reiniciar a CAM"
|
msgstr "Não é possível reiniciar a CAM"
|
||||||
|
|
||||||
|
msgid "do not pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "confirm pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Recording"
|
msgid "Recording"
|
||||||
msgstr "Opções de gravação"
|
msgstr "Opções de gravação"
|
||||||
|
|
||||||
@ -722,6 +731,9 @@ msgstr "Prioridade por defeito"
|
|||||||
msgid "Setup.Recording$Default lifetime (d)"
|
msgid "Setup.Recording$Default lifetime (d)"
|
||||||
msgstr "Validade por defeito (d)"
|
msgstr "Validade por defeito (d)"
|
||||||
|
|
||||||
|
msgid "Setup.Recording$Pause key handling"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.Recording$Pause priority"
|
msgid "Setup.Recording$Pause priority"
|
||||||
msgstr "Prioridade da pausa"
|
msgstr "Prioridade da pausa"
|
||||||
|
|
||||||
@ -983,6 +995,9 @@ msgstr "Domingo"
|
|||||||
msgid "Upcoming recording!"
|
msgid "Upcoming recording!"
|
||||||
msgstr "Gravação agendada!"
|
msgstr "Gravação agendada!"
|
||||||
|
|
||||||
|
msgid "Pause live video?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Recording started"
|
msgid "Recording started"
|
||||||
msgstr "Gravação iniciada"
|
msgstr "Gravação iniciada"
|
||||||
|
|
||||||
|
17
po/ro_RO.po
17
po/ro_RO.po
@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
||||||
"POT-Creation-Date: 2008-12-14 16:10+0100\n"
|
"POT-Creation-Date: 2009-05-21 13:18+0200\n"
|
||||||
"PO-Revision-Date: 2008-02-25 00:39+0100\n"
|
"PO-Revision-Date: 2008-02-25 00:39+0100\n"
|
||||||
"Last-Translator: Lucian Muresan <lucianm@users.sourceforge.net>\n"
|
"Last-Translator: Lucian Muresan <lucianm@users.sourceforge.net>\n"
|
||||||
"Language-Team: Romanian\n"
|
"Language-Team: Romanian\n"
|
||||||
@ -707,6 +707,15 @@ msgstr "CAM-ul este in folosin
|
|||||||
msgid "Can't reset CAM!"
|
msgid "Can't reset CAM!"
|
||||||
msgstr "Nu pot reseta CAM"
|
msgstr "Nu pot reseta CAM"
|
||||||
|
|
||||||
|
msgid "do not pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "confirm pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Recording"
|
msgid "Recording"
|
||||||
msgstr "Înregistrare"
|
msgstr "Înregistrare"
|
||||||
|
|
||||||
@ -725,6 +734,9 @@ msgstr "Prioritate implicit
|
|||||||
msgid "Setup.Recording$Default lifetime (d)"
|
msgid "Setup.Recording$Default lifetime (d)"
|
||||||
msgstr "Timp de pãstrare predefinit (zile)"
|
msgstr "Timp de pãstrare predefinit (zile)"
|
||||||
|
|
||||||
|
msgid "Setup.Recording$Pause key handling"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.Recording$Pause priority"
|
msgid "Setup.Recording$Pause priority"
|
||||||
msgstr "Prioritate pauzã"
|
msgstr "Prioritate pauzã"
|
||||||
|
|
||||||
@ -986,6 +998,9 @@ msgstr "Duminic
|
|||||||
msgid "Upcoming recording!"
|
msgid "Upcoming recording!"
|
||||||
msgstr "Urmeazã o înregistrare!"
|
msgstr "Urmeazã o înregistrare!"
|
||||||
|
|
||||||
|
msgid "Pause live video?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Recording started"
|
msgid "Recording started"
|
||||||
msgstr "A început înregistrarea"
|
msgstr "A început înregistrarea"
|
||||||
|
|
||||||
|
17
po/ru_RU.po
17
po/ru_RU.po
@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
||||||
"POT-Creation-Date: 2008-12-14 16:10+0100\n"
|
"POT-Creation-Date: 2009-05-21 13:18+0200\n"
|
||||||
"PO-Revision-Date: 2008-12-15 14:37+0100\n"
|
"PO-Revision-Date: 2008-12-15 14:37+0100\n"
|
||||||
"Last-Translator: Oleg Roitburd <oleg@roitburd.de>\n"
|
"Last-Translator: Oleg Roitburd <oleg@roitburd.de>\n"
|
||||||
"Language-Team: Russian\n"
|
"Language-Team: Russian\n"
|
||||||
@ -705,6 +705,15 @@ msgstr "CAM
|
|||||||
msgid "Can't reset CAM!"
|
msgid "Can't reset CAM!"
|
||||||
msgstr "¾èØÑÚÐ ßÕàÕ×ÐßãáÚÐ CAM-ÜÞÔãÛï!"
|
msgstr "¾èØÑÚÐ ßÕàÕ×ÐßãáÚÐ CAM-ÜÞÔãÛï!"
|
||||||
|
|
||||||
|
msgid "do not pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "confirm pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Recording"
|
msgid "Recording"
|
||||||
msgstr "·Ðߨáì"
|
msgstr "·Ðߨáì"
|
||||||
|
|
||||||
@ -723,6 +732,9 @@ msgstr "
|
|||||||
msgid "Setup.Recording$Default lifetime (d)"
|
msgid "Setup.Recording$Default lifetime (d)"
|
||||||
msgstr "ÁàÞÚ åàÐÝÕÝØï ×ÐßØáØ ßÞ ãÜÞÛçÐÝØî (Ô)"
|
msgstr "ÁàÞÚ åàÐÝÕÝØï ×ÐßØáØ ßÞ ãÜÞÛçÐÝØî (Ô)"
|
||||||
|
|
||||||
|
msgid "Setup.Recording$Pause key handling"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.Recording$Pause priority"
|
msgid "Setup.Recording$Pause priority"
|
||||||
msgstr "¿àØÞàØâÕâ ÞâÛÞÖÕÝÝÞÓÞ ßàÞáÜÞâàÐ"
|
msgstr "¿àØÞàØâÕâ ÞâÛÞÖÕÝÝÞÓÞ ßàÞáÜÞâàÐ"
|
||||||
|
|
||||||
@ -984,6 +996,9 @@ msgstr "
|
|||||||
msgid "Upcoming recording!"
|
msgid "Upcoming recording!"
|
||||||
msgstr "·Ðߨáì áÚÞàÞ ÝÐçÝÕâáï"
|
msgstr "·Ðߨáì áÚÞàÞ ÝÐçÝÕâáï"
|
||||||
|
|
||||||
|
msgid "Pause live video?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Recording started"
|
msgid "Recording started"
|
||||||
msgstr "·Ðߨáì ÝÐçÐâÐ"
|
msgstr "·Ðߨáì ÝÐçÐâÐ"
|
||||||
|
|
||||||
|
17
po/sl_SI.po
17
po/sl_SI.po
@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
||||||
"POT-Creation-Date: 2008-12-14 16:10+0100\n"
|
"POT-Creation-Date: 2009-05-21 13:18+0200\n"
|
||||||
"PO-Revision-Date: 2008-02-28 19:44+0100\n"
|
"PO-Revision-Date: 2008-02-28 19:44+0100\n"
|
||||||
"Last-Translator: Matjaz Thaler <matjaz.thaler@guest.arnes.si>\n"
|
"Last-Translator: Matjaz Thaler <matjaz.thaler@guest.arnes.si>\n"
|
||||||
"Language-Team: Slovenian\n"
|
"Language-Team: Slovenian\n"
|
||||||
@ -705,6 +705,15 @@ msgstr "CAM je v uporabi - zares resetiraj?"
|
|||||||
msgid "Can't reset CAM!"
|
msgid "Can't reset CAM!"
|
||||||
msgstr "Ne morem resetirati CAM-a!"
|
msgstr "Ne morem resetirati CAM-a!"
|
||||||
|
|
||||||
|
msgid "do not pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "confirm pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Recording"
|
msgid "Recording"
|
||||||
msgstr "Snemanje"
|
msgstr "Snemanje"
|
||||||
|
|
||||||
@ -723,6 +732,9 @@ msgstr "Privzeta prioriteta"
|
|||||||
msgid "Setup.Recording$Default lifetime (d)"
|
msgid "Setup.Recording$Default lifetime (d)"
|
||||||
msgstr "Privzeti ¾ivljenski èas (d)"
|
msgstr "Privzeti ¾ivljenski èas (d)"
|
||||||
|
|
||||||
|
msgid "Setup.Recording$Pause key handling"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.Recording$Pause priority"
|
msgid "Setup.Recording$Pause priority"
|
||||||
msgstr "Prioriteta pavze"
|
msgstr "Prioriteta pavze"
|
||||||
|
|
||||||
@ -984,6 +996,9 @@ msgstr "Nedelja"
|
|||||||
msgid "Upcoming recording!"
|
msgid "Upcoming recording!"
|
||||||
msgstr "Sledi snemanje!"
|
msgstr "Sledi snemanje!"
|
||||||
|
|
||||||
|
msgid "Pause live video?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Recording started"
|
msgid "Recording started"
|
||||||
msgstr "Snemanje se je prièelo"
|
msgstr "Snemanje se je prièelo"
|
||||||
|
|
||||||
|
17
po/sv_SE.po
17
po/sv_SE.po
@ -10,7 +10,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
||||||
"POT-Creation-Date: 2008-12-14 16:10+0100\n"
|
"POT-Creation-Date: 2009-05-21 13:18+0200\n"
|
||||||
"PO-Revision-Date: 2008-03-12 18:25+0100\n"
|
"PO-Revision-Date: 2008-03-12 18:25+0100\n"
|
||||||
"Last-Translator: Magnus Andersson <svankan@bahnhof.se>\n"
|
"Last-Translator: Magnus Andersson <svankan@bahnhof.se>\n"
|
||||||
"Language-Team: Swedish\n"
|
"Language-Team: Swedish\n"
|
||||||
@ -707,6 +707,15 @@ msgstr "CAM upptagen, vill du verkligen starta om?"
|
|||||||
msgid "Can't reset CAM!"
|
msgid "Can't reset CAM!"
|
||||||
msgstr "Kan inte återställa CAM!"
|
msgstr "Kan inte återställa CAM!"
|
||||||
|
|
||||||
|
msgid "do not pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "confirm pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Recording"
|
msgid "Recording"
|
||||||
msgstr "Inspelning"
|
msgstr "Inspelning"
|
||||||
|
|
||||||
@ -725,6 +734,9 @@ msgstr "Normal prioritet"
|
|||||||
msgid "Setup.Recording$Default lifetime (d)"
|
msgid "Setup.Recording$Default lifetime (d)"
|
||||||
msgstr "Normal livstid (dagar)"
|
msgstr "Normal livstid (dagar)"
|
||||||
|
|
||||||
|
msgid "Setup.Recording$Pause key handling"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.Recording$Pause priority"
|
msgid "Setup.Recording$Pause priority"
|
||||||
msgstr "Prioritet för direktinspelning"
|
msgstr "Prioritet för direktinspelning"
|
||||||
|
|
||||||
@ -986,6 +998,9 @@ msgstr "S
|
|||||||
msgid "Upcoming recording!"
|
msgid "Upcoming recording!"
|
||||||
msgstr "strax inspelning..."
|
msgstr "strax inspelning..."
|
||||||
|
|
||||||
|
msgid "Pause live video?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Recording started"
|
msgid "Recording started"
|
||||||
msgstr "Inspelningen har startat"
|
msgstr "Inspelningen har startat"
|
||||||
|
|
||||||
|
17
po/tr_TR.po
17
po/tr_TR.po
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
||||||
"POT-Creation-Date: 2008-12-14 16:10+0100\n"
|
"POT-Creation-Date: 2009-05-21 13:18+0200\n"
|
||||||
"PO-Revision-Date: 2008-02-28 00:33+0100\n"
|
"PO-Revision-Date: 2008-02-28 00:33+0100\n"
|
||||||
"Last-Translator: Oktay Yolgeçen <oktay_73@yahoo.de>\n"
|
"Last-Translator: Oktay Yolgeçen <oktay_73@yahoo.de>\n"
|
||||||
"Language-Team: Turkish\n"
|
"Language-Team: Turkish\n"
|
||||||
@ -704,6 +704,15 @@ msgstr "CAM kullan
|
|||||||
msgid "Can't reset CAM!"
|
msgid "Can't reset CAM!"
|
||||||
msgstr "CAM sýfýrlanamadý!"
|
msgstr "CAM sýfýrlanamadý!"
|
||||||
|
|
||||||
|
msgid "do not pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "confirm pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Recording"
|
msgid "Recording"
|
||||||
msgstr "Kayýt"
|
msgstr "Kayýt"
|
||||||
|
|
||||||
@ -722,6 +731,9 @@ msgstr "Ola
|
|||||||
msgid "Setup.Recording$Default lifetime (d)"
|
msgid "Setup.Recording$Default lifetime (d)"
|
||||||
msgstr "Olaðan çekim ömrü (gün)"
|
msgstr "Olaðan çekim ömrü (gün)"
|
||||||
|
|
||||||
|
msgid "Setup.Recording$Pause key handling"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.Recording$Pause priority"
|
msgid "Setup.Recording$Pause priority"
|
||||||
msgstr "Duraklama prioritesi"
|
msgstr "Duraklama prioritesi"
|
||||||
|
|
||||||
@ -983,6 +995,9 @@ msgstr "Pazar"
|
|||||||
msgid "Upcoming recording!"
|
msgid "Upcoming recording!"
|
||||||
msgstr "Çekim yakýnda baþlýyor!"
|
msgstr "Çekim yakýnda baþlýyor!"
|
||||||
|
|
||||||
|
msgid "Pause live video?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Recording started"
|
msgid "Recording started"
|
||||||
msgstr "Kayýt baþlandý"
|
msgstr "Kayýt baþlandý"
|
||||||
|
|
||||||
|
655
po/uk_UA.po
655
po/uk_UA.po
File diff suppressed because it is too large
Load Diff
17
po/zh_CN.po
17
po/zh_CN.po
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
||||||
"POT-Creation-Date: 2008-12-14 16:10+0100\n"
|
"POT-Creation-Date: 2009-05-21 13:18+0200\n"
|
||||||
"PO-Revision-Date: 2008-03-21 08:44+0800\n"
|
"PO-Revision-Date: 2008-03-21 08:44+0800\n"
|
||||||
"Last-Translator: Nan Feng <nfgx@21cn.com>\n"
|
"Last-Translator: Nan Feng <nfgx@21cn.com>\n"
|
||||||
"Language-Team: Chinese\n"
|
"Language-Team: Chinese\n"
|
||||||
@ -707,6 +707,15 @@ msgstr "CAM正在使用-是否重启?"
|
|||||||
msgid "Can't reset CAM!"
|
msgid "Can't reset CAM!"
|
||||||
msgstr "不能重启CAM"
|
msgstr "不能重启CAM"
|
||||||
|
|
||||||
|
msgid "do not pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "confirm pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "pause live video"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Recording"
|
msgid "Recording"
|
||||||
msgstr "记录中"
|
msgstr "记录中"
|
||||||
|
|
||||||
@ -725,6 +734,9 @@ msgstr "默认优先"
|
|||||||
msgid "Setup.Recording$Default lifetime (d)"
|
msgid "Setup.Recording$Default lifetime (d)"
|
||||||
msgstr "默认终身 (d)"
|
msgstr "默认终身 (d)"
|
||||||
|
|
||||||
|
msgid "Setup.Recording$Pause key handling"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.Recording$Pause priority"
|
msgid "Setup.Recording$Pause priority"
|
||||||
msgstr "暂停优先"
|
msgstr "暂停优先"
|
||||||
|
|
||||||
@ -986,6 +998,9 @@ msgstr "星期天"
|
|||||||
msgid "Upcoming recording!"
|
msgid "Upcoming recording!"
|
||||||
msgstr "即将的记录!"
|
msgstr "即将的记录!"
|
||||||
|
|
||||||
|
msgid "Pause live video?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Recording started"
|
msgid "Recording started"
|
||||||
msgstr "记录开始!"
|
msgstr "记录开始!"
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: recorder.c 2.3 2009/03/20 15:49:02 kls Exp $
|
* $Id: recorder.c 2.4 2009/05/23 12:18:25 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "recorder.h"
|
#include "recorder.h"
|
||||||
@ -44,12 +44,14 @@ cRecorder::cRecorder(const char *FileName, tChannelID ChannelID, int Priority, i
|
|||||||
Type = 0x06;
|
Type = 0x06;
|
||||||
}
|
}
|
||||||
frameDetector = new cFrameDetector(Pid, Type);
|
frameDetector = new cFrameDetector(Pid, Type);
|
||||||
patPmtGenerator.SetChannel(Channel);
|
|
||||||
fileName = NULL;
|
|
||||||
index = NULL;
|
index = NULL;
|
||||||
fileSize = 0;
|
fileSize = 0;
|
||||||
lastDiskSpaceCheck = time(NULL);
|
lastDiskSpaceCheck = time(NULL);
|
||||||
fileName = new cFileName(FileName, true);
|
fileName = new cFileName(FileName, true);
|
||||||
|
int PatVersion, PmtVersion;
|
||||||
|
if (fileName->GetLastPatPmtVersions(PatVersion, PmtVersion))
|
||||||
|
patPmtGenerator.SetVersions(PatVersion + 1, PmtVersion + 1);
|
||||||
|
patPmtGenerator.SetChannel(Channel);
|
||||||
recordFile = fileName->Open();
|
recordFile = fileName->Open();
|
||||||
if (!recordFile)
|
if (!recordFile)
|
||||||
return;
|
return;
|
||||||
|
68
recording.c
68
recording.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: recording.c 2.12 2009/04/13 13:50:39 kls Exp $
|
* $Id: recording.c 2.16 2009/06/13 13:34:08 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "recording.h"
|
#include "recording.h"
|
||||||
@ -20,6 +20,7 @@
|
|||||||
#include "channels.h"
|
#include "channels.h"
|
||||||
#include "i18n.h"
|
#include "i18n.h"
|
||||||
#include "interface.h"
|
#include "interface.h"
|
||||||
|
#include "remux.h"
|
||||||
#include "skins.h"
|
#include "skins.h"
|
||||||
#include "tools.h"
|
#include "tools.h"
|
||||||
#include "videodir.h"
|
#include "videodir.h"
|
||||||
@ -622,8 +623,8 @@ cRecording::cRecording(cTimer *Timer, const cEvent *Event)
|
|||||||
Utf8Strn0Cpy(SubtitleBuffer, Subtitle, MAX_SUBTITLE_LENGTH);
|
Utf8Strn0Cpy(SubtitleBuffer, Subtitle, MAX_SUBTITLE_LENGTH);
|
||||||
Subtitle = SubtitleBuffer;
|
Subtitle = SubtitleBuffer;
|
||||||
}
|
}
|
||||||
char *macroTITLE = strstr(Timer->File(), TIMERMACRO_TITLE);
|
const char *macroTITLE = strstr(Timer->File(), TIMERMACRO_TITLE);
|
||||||
char *macroEPISODE = strstr(Timer->File(), TIMERMACRO_EPISODE);
|
const char *macroEPISODE = strstr(Timer->File(), TIMERMACRO_EPISODE);
|
||||||
if (macroTITLE || macroEPISODE) {
|
if (macroTITLE || macroEPISODE) {
|
||||||
name = strdup(Timer->File());
|
name = strdup(Timer->File());
|
||||||
name = strreplace(name, TIMERMACRO_TITLE, Title);
|
name = strreplace(name, TIMERMACRO_TITLE, Title);
|
||||||
@ -672,7 +673,7 @@ cRecording::cRecording(const char *FileName)
|
|||||||
sortBuffer = NULL;
|
sortBuffer = NULL;
|
||||||
fileName = strdup(FileName);
|
fileName = strdup(FileName);
|
||||||
FileName += strlen(VideoDirectory) + 1;
|
FileName += strlen(VideoDirectory) + 1;
|
||||||
char *p = strrchr(FileName, '/');
|
const char *p = strrchr(FileName, '/');
|
||||||
|
|
||||||
name = NULL;
|
name = NULL;
|
||||||
info = new cRecordingInfo;
|
info = new cRecordingInfo;
|
||||||
@ -1528,8 +1529,8 @@ bool cIndexFile::Get(int Index, uint16_t *FileNumber, off_t *FileOffset, bool *I
|
|||||||
if (Independent)
|
if (Independent)
|
||||||
*Independent = index[Index].independent;
|
*Independent = index[Index].independent;
|
||||||
if (Length) {
|
if (Length) {
|
||||||
int fn = index[Index + 1].number;
|
uint16_t fn = index[Index + 1].number;
|
||||||
int fo = index[Index + 1].offset;
|
off_t fo = index[Index + 1].offset;
|
||||||
if (fn == *FileNumber)
|
if (fn == *FileNumber)
|
||||||
*Length = fo - *FileOffset;
|
*Length = fo - *FileOffset;
|
||||||
else
|
else
|
||||||
@ -1559,8 +1560,8 @@ int cIndexFile::GetNextIFrame(int Index, bool Forward, uint16_t *FileNumber, off
|
|||||||
*FileOffset = index[Index].offset;
|
*FileOffset = index[Index].offset;
|
||||||
if (Length) {
|
if (Length) {
|
||||||
// all recordings end with a non-independent frame, so the following should be safe:
|
// all recordings end with a non-independent frame, so the following should be safe:
|
||||||
int fn = index[Index + 1].number;
|
uint16_t fn = index[Index + 1].number;
|
||||||
int fo = index[Index + 1].offset;
|
off_t fo = index[Index + 1].offset;
|
||||||
if (fn == *FileNumber)
|
if (fn == *FileNumber)
|
||||||
*Length = fo - *FileOffset;
|
*Length = fo - *FileOffset;
|
||||||
else {
|
else {
|
||||||
@ -1629,6 +1630,57 @@ cFileName::~cFileName()
|
|||||||
free(fileName);
|
free(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool cFileName::GetLastPatPmtVersions(int &PatVersion, int &PmtVersion)
|
||||||
|
{
|
||||||
|
if (fileName && !isPesRecording) {
|
||||||
|
// Find the last recording file:
|
||||||
|
int Number = 1;
|
||||||
|
for (; Number <= MAXFILESPERRECORDINGTS + 1; Number++) { // +1 to correctly set Number in case there actually are that many files
|
||||||
|
sprintf(pFileNumber, RECORDFILESUFFIXTS, Number);
|
||||||
|
if (access(fileName, F_OK) != 0) { // file doesn't exist
|
||||||
|
Number--;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (; Number > 0; Number--) {
|
||||||
|
// Search for a PAT packet from the end of the file:
|
||||||
|
cPatPmtParser PatPmtParser;
|
||||||
|
sprintf(pFileNumber, RECORDFILESUFFIXTS, Number);
|
||||||
|
int fd = open(fileName, O_RDONLY | O_LARGEFILE, DEFFILEMODE);
|
||||||
|
if (fd >= 0) {
|
||||||
|
off_t pos = lseek(fd, -TS_SIZE, SEEK_END);
|
||||||
|
while (pos >= 0) {
|
||||||
|
// Read and parse the PAT/PMT:
|
||||||
|
uchar buf[TS_SIZE];
|
||||||
|
while (read(fd, buf, sizeof(buf)) == sizeof(buf)) {
|
||||||
|
if (buf[0] == TS_SYNC_BYTE) {
|
||||||
|
int Pid = TsPid(buf);
|
||||||
|
if (Pid == 0)
|
||||||
|
PatPmtParser.ParsePat(buf, sizeof(buf));
|
||||||
|
else if (Pid == PatPmtParser.PmtPid()) {
|
||||||
|
PatPmtParser.ParsePmt(buf, sizeof(buf));
|
||||||
|
if (PatPmtParser.GetVersions(PatVersion, PmtVersion)) {
|
||||||
|
close(fd);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
break; // PAT/PMT is always in one sequence
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
pos = lseek(fd, pos - TS_SIZE, SEEK_SET);
|
||||||
|
}
|
||||||
|
close(fd);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
cUnbufferedFile *cFileName::Open(void)
|
cUnbufferedFile *cFileName::Open(void)
|
||||||
{
|
{
|
||||||
if (!file) {
|
if (!file) {
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: recording.h 2.7 2009/04/19 09:00:45 kls Exp $
|
* $Id: recording.h 2.8 2009/05/23 12:14:42 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __RECORDING_H
|
#ifndef __RECORDING_H
|
||||||
@ -260,6 +260,7 @@ public:
|
|||||||
~cFileName();
|
~cFileName();
|
||||||
const char *Name(void) { return fileName; }
|
const char *Name(void) { return fileName; }
|
||||||
int Number(void) { return fileNumber; }
|
int Number(void) { return fileNumber; }
|
||||||
|
bool GetLastPatPmtVersions(int &PatVersion, int &PmtVersion);
|
||||||
cUnbufferedFile *Open(void);
|
cUnbufferedFile *Open(void);
|
||||||
void Close(void);
|
void Close(void);
|
||||||
cUnbufferedFile *SetOffset(int Number, off_t Offset = 0);
|
cUnbufferedFile *SetOffset(int Number, off_t Offset = 0);
|
||||||
|
29
remux.c
29
remux.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: remux.c 2.20 2009/05/03 14:43:25 kls Exp $
|
* $Id: remux.c 2.24 2009/06/06 13:24:57 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "remux.h"
|
#include "remux.h"
|
||||||
@ -357,6 +357,12 @@ void cPatPmtGenerator::GeneratePmt(cChannel *Channel)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void cPatPmtGenerator::SetVersions(int PatVersion, int PmtVersion)
|
||||||
|
{
|
||||||
|
patVersion = PatVersion & 0x1F;
|
||||||
|
pmtVersion = PmtVersion & 0x1F;
|
||||||
|
}
|
||||||
|
|
||||||
void cPatPmtGenerator::SetChannel(cChannel *Channel)
|
void cPatPmtGenerator::SetChannel(cChannel *Channel)
|
||||||
{
|
{
|
||||||
if (Channel) {
|
if (Channel) {
|
||||||
@ -383,8 +389,9 @@ uchar *cPatPmtGenerator::GetPmt(int &Index)
|
|||||||
|
|
||||||
// --- cPatPmtParser ---------------------------------------------------------
|
// --- cPatPmtParser ---------------------------------------------------------
|
||||||
|
|
||||||
cPatPmtParser::cPatPmtParser(void)
|
cPatPmtParser::cPatPmtParser(bool UpdatePrimaryDevice)
|
||||||
{
|
{
|
||||||
|
updatePrimaryDevice = UpdatePrimaryDevice;
|
||||||
Reset();
|
Reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -472,6 +479,7 @@ void cPatPmtParser::ParsePmt(const uchar *Data, int Length)
|
|||||||
dbgpatpmt(" pcr = %d\n", Pmt.getPCRPid());
|
dbgpatpmt(" pcr = %d\n", Pmt.getPCRPid());
|
||||||
if (pmtVersion == Pmt.getVersionNumber())
|
if (pmtVersion == Pmt.getVersionNumber())
|
||||||
return;
|
return;
|
||||||
|
if (updatePrimaryDevice)
|
||||||
cDevice::PrimaryDevice()->ClrAvailableTracks(false, true);
|
cDevice::PrimaryDevice()->ClrAvailableTracks(false, true);
|
||||||
int NumApids = 0;
|
int NumApids = 0;
|
||||||
int NumDpids = 0;
|
int NumDpids = 0;
|
||||||
@ -481,6 +489,7 @@ void cPatPmtParser::ParsePmt(const uchar *Data, int Length)
|
|||||||
for (SI::Loop::Iterator it; Pmt.streamLoop.getNext(stream, it); ) {
|
for (SI::Loop::Iterator it; Pmt.streamLoop.getNext(stream, it); ) {
|
||||||
dbgpatpmt(" stream type = %02X, pid = %d", stream.getStreamType(), stream.getPid());
|
dbgpatpmt(" stream type = %02X, pid = %d", stream.getStreamType(), stream.getPid());
|
||||||
switch (stream.getStreamType()) {
|
switch (stream.getStreamType()) {
|
||||||
|
case 0x01: // STREAMTYPE_11172_VIDEO
|
||||||
case 0x02: // STREAMTYPE_13818_VIDEO
|
case 0x02: // STREAMTYPE_13818_VIDEO
|
||||||
case 0x1B: // MPEG4
|
case 0x1B: // MPEG4
|
||||||
vpid = stream.getPid();
|
vpid = stream.getPid();
|
||||||
@ -515,6 +524,7 @@ void cPatPmtParser::ParsePmt(const uchar *Data, int Length)
|
|||||||
}
|
}
|
||||||
delete d;
|
delete d;
|
||||||
}
|
}
|
||||||
|
if (updatePrimaryDevice)
|
||||||
cDevice::PrimaryDevice()->SetAvailableTrack(ttAudio, NumApids, stream.getPid(), ALangs);
|
cDevice::PrimaryDevice()->SetAvailableTrack(ttAudio, NumApids, stream.getPid(), ALangs);
|
||||||
NumApids++;
|
NumApids++;
|
||||||
}
|
}
|
||||||
@ -550,6 +560,7 @@ void cPatPmtParser::ParsePmt(const uchar *Data, int Length)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (updatePrimaryDevice)
|
||||||
cDevice::PrimaryDevice()->SetAvailableTrack(ttSubtitle, NumSpids, stream.getPid(), SLangs);
|
cDevice::PrimaryDevice()->SetAvailableTrack(ttSubtitle, NumSpids, stream.getPid(), SLangs);
|
||||||
NumSpids++;
|
NumSpids++;
|
||||||
}
|
}
|
||||||
@ -566,6 +577,7 @@ void cPatPmtParser::ParsePmt(const uchar *Data, int Length)
|
|||||||
}
|
}
|
||||||
if (dpid) {
|
if (dpid) {
|
||||||
if (NumDpids < MAXDPIDS) {
|
if (NumDpids < MAXDPIDS) {
|
||||||
|
if (updatePrimaryDevice)
|
||||||
cDevice::PrimaryDevice()->SetAvailableTrack(ttDolby, NumDpids, dpid, lang);
|
cDevice::PrimaryDevice()->SetAvailableTrack(ttDolby, NumDpids, dpid, lang);
|
||||||
NumDpids++;
|
NumDpids++;
|
||||||
}
|
}
|
||||||
@ -574,9 +586,11 @@ void cPatPmtParser::ParsePmt(const uchar *Data, int Length)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
dbgpatpmt("\n");
|
dbgpatpmt("\n");
|
||||||
|
if (updatePrimaryDevice) {
|
||||||
cDevice::PrimaryDevice()->EnsureAudioTrack(true);
|
cDevice::PrimaryDevice()->EnsureAudioTrack(true);
|
||||||
cDevice::PrimaryDevice()->EnsureSubtitleTrack();
|
cDevice::PrimaryDevice()->EnsureSubtitleTrack();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
pmtVersion = Pmt.getVersionNumber();
|
pmtVersion = Pmt.getVersionNumber();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -584,13 +598,19 @@ void cPatPmtParser::ParsePmt(const uchar *Data, int Length)
|
|||||||
pmtSize = 0;
|
pmtSize = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool cPatPmtParser::GetVersions(int &PatVersion, int &PmtVersion)
|
||||||
|
{
|
||||||
|
PatVersion = patVersion;
|
||||||
|
PmtVersion = pmtVersion;
|
||||||
|
return patVersion >= 0 && pmtVersion >= 0;
|
||||||
|
}
|
||||||
|
|
||||||
// --- cTsToPes --------------------------------------------------------------
|
// --- cTsToPes --------------------------------------------------------------
|
||||||
|
|
||||||
cTsToPes::cTsToPes(void)
|
cTsToPes::cTsToPes(void)
|
||||||
{
|
{
|
||||||
data = NULL;
|
data = NULL;
|
||||||
size = length = offset = 0;
|
size = length = offset = 0;
|
||||||
synced = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
cTsToPes::~cTsToPes()
|
cTsToPes::~cTsToPes()
|
||||||
@ -702,7 +722,7 @@ cFrameDetector::cFrameDetector(int Pid, int Type)
|
|||||||
newFrame = independentFrame = false;
|
newFrame = independentFrame = false;
|
||||||
numPtsValues = 0;
|
numPtsValues = 0;
|
||||||
numIFrames = 0;
|
numIFrames = 0;
|
||||||
isVideo = type == 0x02 || type == 0x1B; // MPEG 2 or MPEG 4
|
isVideo = type == 0x01 || type == 0x02 || type == 0x1B; // MPEG 1, 2 or 4
|
||||||
frameDuration = 0;
|
frameDuration = 0;
|
||||||
framesInPayloadUnit = framesPerPayloadUnit = 0;
|
framesInPayloadUnit = framesPerPayloadUnit = 0;
|
||||||
payloadUnitOfFrame = 0;
|
payloadUnitOfFrame = 0;
|
||||||
@ -795,6 +815,7 @@ int cFrameDetector::Analyze(const uchar *Data, int Length)
|
|||||||
scanner <<= 8;
|
scanner <<= 8;
|
||||||
scanner |= Data[i];
|
scanner |= Data[i];
|
||||||
switch (type) {
|
switch (type) {
|
||||||
|
case 0x01: // MPEG 1 video
|
||||||
case 0x02: // MPEG 2 video
|
case 0x02: // MPEG 2 video
|
||||||
if (scanner == 0x00000100) { // Picture Start Code
|
if (scanner == 0x00000100) { // Picture Start Code
|
||||||
if (synced && Processed)
|
if (synced && Processed)
|
||||||
|
31
remux.h
31
remux.h
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: remux.h 2.10 2009/04/19 10:57:09 kls Exp $
|
* $Id: remux.h 2.17 2009/06/06 13:26:23 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __REMUX_H
|
#ifndef __REMUX_H
|
||||||
@ -181,6 +181,15 @@ protected:
|
|||||||
///< with GetPmt().
|
///< with GetPmt().
|
||||||
public:
|
public:
|
||||||
cPatPmtGenerator(cChannel *Channel = NULL);
|
cPatPmtGenerator(cChannel *Channel = NULL);
|
||||||
|
void SetVersions(int PatVersion, int PmtVersion);
|
||||||
|
///< Sets the version numbers for the generated PAT and PMT, in case
|
||||||
|
///< this generator is used to, e.g., continue a previously interrupted
|
||||||
|
///< recording (in which case the numbers given should be derived from
|
||||||
|
///< the PAT/PMT versions last used in the existing recording, incremented
|
||||||
|
///< by 1. If the given numbers exceed the allowed range of 0..31, the
|
||||||
|
///< higher bits will automatically be cleared.
|
||||||
|
///< SetVersions() needs to be called before SetChannel() in order to
|
||||||
|
///< have an effect from the very start.
|
||||||
void SetChannel(cChannel *Channel);
|
void SetChannel(cChannel *Channel);
|
||||||
///< Sets the Channel for which the PAT/PMT shall be generated.
|
///< Sets the Channel for which the PAT/PMT shall be generated.
|
||||||
uchar *GetPat(void);
|
uchar *GetPat(void);
|
||||||
@ -204,10 +213,11 @@ private:
|
|||||||
int pmtPid;
|
int pmtPid;
|
||||||
int vpid;
|
int vpid;
|
||||||
int vtype;
|
int vtype;
|
||||||
|
bool updatePrimaryDevice;
|
||||||
protected:
|
protected:
|
||||||
int SectionLength(const uchar *Data, int Length) { return (Length >= 3) ? ((int(Data[1]) & 0x0F) << 8)| Data[2] : 0; }
|
int SectionLength(const uchar *Data, int Length) { return (Length >= 3) ? ((int(Data[1]) & 0x0F) << 8)| Data[2] : 0; }
|
||||||
public:
|
public:
|
||||||
cPatPmtParser(void);
|
cPatPmtParser(bool UpdatePrimaryDevice = false);
|
||||||
void Reset(void);
|
void Reset(void);
|
||||||
///< Resets the parser. This function must be called whenever a new
|
///< Resets the parser. This function must be called whenever a new
|
||||||
///< stream is parsed.
|
///< stream is parsed.
|
||||||
@ -221,6 +231,9 @@ public:
|
|||||||
///< are delivered to the parser through several subsequent calls to
|
///< are delivered to the parser through several subsequent calls to
|
||||||
///< ParsePmt(). The whole PMT data will be processed once the last packet
|
///< ParsePmt(). The whole PMT data will be processed once the last packet
|
||||||
///< has been received.
|
///< has been received.
|
||||||
|
bool GetVersions(int &PatVersion, int &PmtVersion);
|
||||||
|
///< Returns true if a valid PAT/PMT has been parsed and stores
|
||||||
|
///< the current version numbers in the given variables.
|
||||||
int PmtPid(void) { return pmtPid; }
|
int PmtPid(void) { return pmtPid; }
|
||||||
///< Returns the PMT pid as defined by the current PAT.
|
///< Returns the PMT pid as defined by the current PAT.
|
||||||
///< If no PAT has been received yet, -1 will be returned.
|
///< If no PAT has been received yet, -1 will be returned.
|
||||||
@ -239,7 +252,6 @@ private:
|
|||||||
int size;
|
int size;
|
||||||
int length;
|
int length;
|
||||||
int offset;
|
int offset;
|
||||||
bool synced;
|
|
||||||
public:
|
public:
|
||||||
cTsToPes(void);
|
cTsToPes(void);
|
||||||
~cTsToPes();
|
~cTsToPes();
|
||||||
@ -249,11 +261,24 @@ public:
|
|||||||
///< If the given TS packet starts a new PES payload packet, the converter
|
///< If the given TS packet starts a new PES payload packet, the converter
|
||||||
///< will be automatically reset. Any packets before the first one that starts
|
///< will be automatically reset. Any packets before the first one that starts
|
||||||
///< a new PES payload packet will be ignored.
|
///< a new PES payload packet will be ignored.
|
||||||
|
///< Once a TS packet has been put into a cTsToPes converter, all subsequent
|
||||||
|
///< packets until the next call to Reset() must belong to the same PID as
|
||||||
|
///< the first packet. There is no check whether this actually is the case, so
|
||||||
|
///< the caller is responsible for making sure this condition is met.
|
||||||
const uchar *GetPes(int &Length);
|
const uchar *GetPes(int &Length);
|
||||||
///< Gets a pointer to the complete PES packet, or NULL if the packet
|
///< Gets a pointer to the complete PES packet, or NULL if the packet
|
||||||
///< is not complete yet. If the packet is complete, Length will contain
|
///< is not complete yet. If the packet is complete, Length will contain
|
||||||
///< the total packet length. The returned pointer is only valid until
|
///< the total packet length. The returned pointer is only valid until
|
||||||
///< the next call to PutTs() or Reset(), or until this object is destroyed.
|
///< the next call to PutTs() or Reset(), or until this object is destroyed.
|
||||||
|
///< Once GetPes() has returned a non-NULL value, it must be called
|
||||||
|
///< repeatedly, and the data processed, until it returns NULL. This
|
||||||
|
///< is because video packets may be larger than the data a single
|
||||||
|
///< PES packet with an actual length field can hold, and are therefore
|
||||||
|
///< split into several PES packets with smaller sizes.
|
||||||
|
///< Note that for video data GetPes() may only be called if the next
|
||||||
|
///< TS packet that will be given to PutTs() has the "payload start" flag
|
||||||
|
///< set, because this is the only way to determine the end of a video PES
|
||||||
|
///< packet.
|
||||||
void Reset(void);
|
void Reset(void);
|
||||||
///< Resets the converter. This needs to be called after a PES packet has
|
///< Resets the converter. This needs to be called after a PES packet has
|
||||||
///< been fetched by a call to GetPes(), and before the next call to
|
///< been fetched by a call to GetPes(), and before the next call to
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
* Parts of this file were inspired by the 'ringbuffy.c' from the
|
* Parts of this file were inspired by the 'ringbuffy.c' from the
|
||||||
* LinuxDVB driver (see linuxtv.org).
|
* LinuxDVB driver (see linuxtv.org).
|
||||||
*
|
*
|
||||||
* $Id: ringbuffer.c 2.1 2009/02/24 11:32:14 kls Exp $
|
* $Id: ringbuffer.c 2.2 2009/05/17 10:05:17 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "ringbuffer.h"
|
#include "ringbuffer.h"
|
||||||
@ -43,7 +43,7 @@ void cRingBuffer::UpdatePercentage(int Fill)
|
|||||||
{
|
{
|
||||||
if (Fill > maxFill)
|
if (Fill > maxFill)
|
||||||
maxFill = Fill;
|
maxFill = Fill;
|
||||||
int percent = Fill * 100 / (Size() - 1) / PERCENTAGEDELTA * PERCENTAGEDELTA;
|
int percent = Fill * 100 / (Size() - 1) / PERCENTAGEDELTA * PERCENTAGEDELTA; // clamp down to nearest quantum
|
||||||
if (percent != lastPercent) {
|
if (percent != lastPercent) {
|
||||||
if (percent >= PERCENTAGETHRESHOLD && percent > lastPercent || percent < PERCENTAGETHRESHOLD && lastPercent >= PERCENTAGETHRESHOLD) {
|
if (percent >= PERCENTAGETHRESHOLD && percent > lastPercent || percent < PERCENTAGETHRESHOLD && lastPercent >= PERCENTAGETHRESHOLD) {
|
||||||
dsyslog("buffer usage: %d%% (tid=%d)", percent, getThreadTid);
|
dsyslog("buffer usage: %d%% (tid=%d)", percent, getThreadTid);
|
||||||
|
5
skins.c
5
skins.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: skins.c 2.0 2008/02/17 11:31:09 kls Exp $
|
* $Id: skins.c 2.1 2009/06/06 15:12:31 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "skins.h"
|
#include "skins.h"
|
||||||
@ -78,8 +78,9 @@ void cSkinDisplayMenu::SetTabs(int Tab1, int Tab2, int Tab3, int Tab4, int Tab5)
|
|||||||
tabs[3] = Tab3 ? tabs[2] + Tab3 : 0;
|
tabs[3] = Tab3 ? tabs[2] + Tab3 : 0;
|
||||||
tabs[4] = Tab4 ? tabs[3] + Tab4 : 0;
|
tabs[4] = Tab4 ? tabs[3] + Tab4 : 0;
|
||||||
tabs[5] = Tab5 ? tabs[4] + Tab5 : 0;
|
tabs[5] = Tab5 ? tabs[4] + Tab5 : 0;
|
||||||
|
int AvgCharWidth = Setup.FontOsdSize * 3 / 5; // just an estimate
|
||||||
for (int i = 1; i < MaxTabs; i++)
|
for (int i = 1; i < MaxTabs; i++)
|
||||||
tabs[i] *= 12;//XXX average character width of font used for items - see also skincurses.c!!!
|
tabs[i] *= AvgCharWidth;
|
||||||
}
|
}
|
||||||
|
|
||||||
void cSkinDisplayMenu::Scroll(bool Up, bool Page)
|
void cSkinDisplayMenu::Scroll(bool Up, bool Page)
|
||||||
|
15
svdrp.c
15
svdrp.c
@ -10,7 +10,7 @@
|
|||||||
* and interact with the Video Disk Recorder - or write a full featured
|
* and interact with the Video Disk Recorder - or write a full featured
|
||||||
* graphical interface that sits on top of an SVDRP connection.
|
* graphical interface that sits on top of an SVDRP connection.
|
||||||
*
|
*
|
||||||
* $Id: svdrp.c 2.3 2009/04/13 13:35:29 kls Exp $
|
* $Id: svdrp.c 2.5 2009/06/06 14:03:55 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "svdrp.h"
|
#include "svdrp.h"
|
||||||
@ -739,7 +739,7 @@ void cSVDRP::CmdGRAB(const char *Option)
|
|||||||
char *strtok_next;
|
char *strtok_next;
|
||||||
FileName = strtok_r(p, delim, &strtok_next);
|
FileName = strtok_r(p, delim, &strtok_next);
|
||||||
// image type:
|
// image type:
|
||||||
char *Extension = strrchr(FileName, '.');
|
const char *Extension = strrchr(FileName, '.');
|
||||||
if (Extension) {
|
if (Extension) {
|
||||||
if (strcasecmp(Extension, ".jpg") == 0 || strcasecmp(Extension, ".jpeg") == 0)
|
if (strcasecmp(Extension, ".jpg") == 0 || strcasecmp(Extension, ".jpeg") == 0)
|
||||||
Jpeg = true;
|
Jpeg = true;
|
||||||
@ -798,16 +798,17 @@ void cSVDRP::CmdGRAB(const char *Option)
|
|||||||
char RealFileName[PATH_MAX];
|
char RealFileName[PATH_MAX];
|
||||||
if (FileName) {
|
if (FileName) {
|
||||||
if (grabImageDir) {
|
if (grabImageDir) {
|
||||||
cString s;
|
cString s(FileName);
|
||||||
char *slash = strrchr(FileName, '/');
|
FileName = s;
|
||||||
|
const char *slash = strrchr(FileName, '/');
|
||||||
if (!slash) {
|
if (!slash) {
|
||||||
s = AddDirectory(grabImageDir, FileName);
|
s = AddDirectory(grabImageDir, FileName);
|
||||||
FileName = s;
|
FileName = s;
|
||||||
}
|
}
|
||||||
slash = strrchr(FileName, '/'); // there definitely is one
|
slash = strrchr(FileName, '/'); // there definitely is one
|
||||||
*slash = 0;
|
cString t(s);
|
||||||
char *r = realpath(FileName, RealFileName);
|
t.Truncate(slash - FileName);
|
||||||
*slash = '/';
|
char *r = realpath(t, RealFileName);
|
||||||
if (!r) {
|
if (!r) {
|
||||||
LOG_ERROR_STR(FileName);
|
LOG_ERROR_STR(FileName);
|
||||||
Reply(501, "Invalid file name \"%s\"", FileName);
|
Reply(501, "Invalid file name \"%s\"", FileName);
|
||||||
|
8
tools.c
8
tools.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: tools.c 2.2 2009/01/16 14:29:08 kls Exp $
|
* $Id: tools.c 2.3 2009/05/31 11:43:24 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "tools.h"
|
#include "tools.h"
|
||||||
@ -1473,17 +1473,19 @@ int cUnbufferedFile::Open(const char *FileName, int Flags, mode_t Mode)
|
|||||||
|
|
||||||
int cUnbufferedFile::Close(void)
|
int cUnbufferedFile::Close(void)
|
||||||
{
|
{
|
||||||
#ifdef USE_FADVISE
|
|
||||||
if (fd >= 0) {
|
if (fd >= 0) {
|
||||||
|
#ifdef USE_FADVISE
|
||||||
if (totwritten) // if we wrote anything make sure the data has hit the disk before
|
if (totwritten) // if we wrote anything make sure the data has hit the disk before
|
||||||
fdatasync(fd); // calling fadvise, as this is our last chance to un-cache it.
|
fdatasync(fd); // calling fadvise, as this is our last chance to un-cache it.
|
||||||
posix_fadvise(fd, 0, 0, POSIX_FADV_DONTNEED);
|
posix_fadvise(fd, 0, 0, POSIX_FADV_DONTNEED);
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
int OldFd = fd;
|
int OldFd = fd;
|
||||||
fd = -1;
|
fd = -1;
|
||||||
return close(OldFd);
|
return close(OldFd);
|
||||||
}
|
}
|
||||||
|
errno = EBADF;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
// When replaying and going e.g. FF->PLAY the position jumps back 2..8M
|
// When replaying and going e.g. FF->PLAY the position jumps back 2..8M
|
||||||
// hence we do not want to drop recently accessed data at once.
|
// hence we do not want to drop recently accessed data at once.
|
||||||
|
10
vdr.c
10
vdr.c
@ -22,7 +22,7 @@
|
|||||||
*
|
*
|
||||||
* The project's page is at http://www.cadsoft.de/vdr
|
* The project's page is at http://www.cadsoft.de/vdr
|
||||||
*
|
*
|
||||||
* $Id: vdr.c 2.8 2009/05/03 10:33:06 kls Exp $
|
* $Id: vdr.c 2.10 2009/05/21 11:14:48 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <getopt.h>
|
#include <getopt.h>
|
||||||
@ -750,8 +750,10 @@ int main(int argc, char *argv[])
|
|||||||
// Update the OSD size:
|
// Update the OSD size:
|
||||||
{
|
{
|
||||||
static time_t lastOsdSizeUpdate = 0;
|
static time_t lastOsdSizeUpdate = 0;
|
||||||
if (Now != lastOsdSizeUpdate) // once per second
|
if (Now != lastOsdSizeUpdate) { // once per second
|
||||||
cOsdProvider::UpdateOsdSize();
|
cOsdProvider::UpdateOsdSize();
|
||||||
|
lastOsdSizeUpdate = Now;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// Restart the Watchdog timer:
|
// Restart the Watchdog timer:
|
||||||
if (WatchdogTimeout > 0) {
|
if (WatchdogTimeout > 0) {
|
||||||
@ -1060,8 +1062,12 @@ int main(int argc, char *argv[])
|
|||||||
case kPause:
|
case kPause:
|
||||||
if (!cControl::Control()) {
|
if (!cControl::Control()) {
|
||||||
DELETE_MENU;
|
DELETE_MENU;
|
||||||
|
if (Setup.PauseKeyHandling) {
|
||||||
|
if (Setup.PauseKeyHandling > 1 || Interface->Confirm(tr("Pause live video?"))) {
|
||||||
if (!cRecordControls::PauseLiveVideo())
|
if (!cRecordControls::PauseLiveVideo())
|
||||||
Skins.Message(mtError, tr("No free DVB device to record!"));
|
Skins.Message(mtError, tr("No free DVB device to record!"));
|
||||||
|
}
|
||||||
|
}
|
||||||
key = kNone; // nobody else needs to see this key
|
key = kNone; // nobody else needs to see this key
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user