mirror of
https://github.com/vdr-projects/vdr.git
synced 2025-03-01 10:50:46 +00:00
Version 1.7.33
VDR developer version 1.7.33 is now available at ftp://ftp.tvdr.de/vdr/Developer/vdr-1.7.33.tar.bz2 A 'diff' against the previous version is available at ftp://ftp.tvdr.de/vdr/Developer/vdr-1.7.32-1.7.33.diff MD5 checksums: 7c21451360ac7959d0d95e533d34451c vdr-1.7.33.tar.bz2 c79257198f8569bc02f43dc470ee3076 vdr-1.7.32-1.7.33.diff WARNING: ======== This is a developer version. Even though I use it in my productive environment. I strongly recommend that you only use it under controlled conditions and for testing and debugging. IMPORTANT: ========== This version of VDR no longer sets LC_NUMERIC to "C" in order to make sure any floating point numbers written to configuration files use a proper decimal point. It rather explicitly converts such numbers using the new functions atod() and dtoa(). IF YOU USE PLUGINS THAT STORE FLOATING POINT NUMBERS IN THEIR OWN CONFIGURATION FILES, YOU SHOULD SET export LC_NUMERIC=C BEFORE RUNNING VDR, UNTIL THESE PLUGINS HAVE BEEN PROPERLY UPDATED. From the HISTORY file: - In order to be able to play TS recordings from other sources, in which there is more than one PMT PID in the PAT, 'int cPatPmtParser::PatPmt(void)' has been changed to 'bool cPatPmtParser::IsPatPmt(int Pid)'. - Fixed learning remote control keys with the LCARS skin. - Updated the Macedonian OSD texts (thanks to Dimitar Petrovski). - Fixed getting only non-video packets in cCuttingThread::GetPendingPackets() (reported by Sören Moch). - Changed all occurrences of MPEG4 to H264 (pointed out by Sören Moch). - Fixed getting the number of editing sequences in case the last sequence has no actual end mark. - The cutter now only increments the TS continuity counter for packets that have a payload (pointed out by Sören Moch). - Fixed adjusting the DTS values in the cutter, to compensate for dropped B-frames (pointed out by Sören Moch). - Fixed a typo in skins.h (thanks to Lars Hanisch). - Simplified calculating the PTS offset in cPtsFixer::Fix() and fixed the overflow handling of PCR values (thanks to Sören Moch). - Fixed calling iconv_close() only with a valid iconv_t value (thanks to Juergen Lock). - Fixed faulty opening of the Recordings menu when pressing the Play key during normal live viewing mode in case there is a "last viewed" recording. - Fixed some #include statements in plugins to use <vdr/...> instead of "vdr/..." (thanks to Lars Hanisch). - Fixed some spellings in osd.h and svdrp.c (thanks to Ville Skyttä). - Fixed handling lowercase polarization characters in channel definitions if no DiSEqC is used (reported by Mike Hay, actual bug pointed out by Stefan Huelswitt). - Synchronizing system time to the transponder time is now done using adjtime() in order to avoid discontinuities (suggested by Manuel Reimer). If the time difference is more than 10 seconds, stime() is still used to do the initial sync. - The '7' and '9' keys now jump to the very beginning or end, respectively, of the recording, even if there is no mark set at that point (following a request from Andre Weidemann). - Now always setting the TDT EIT filter, because otherwise when turning on using the transponder time in the Setup menu, it would only be used after the next restart of VDR (thanks to Sundararaj Reel). - The new functions cDevice::CanScaleVideo() and cDevice::ScaleVideo() can be used by derived output devices to implement scaling the video to a given size and location (based on a suggestion by Lucian Muresan). - The SVDRP command HITK now discards any keys if the remote control is currently turned off (thanks to Alexander Hans). - The new remote control key "Play/Pause" can be used with remote controls that don't have separate keys for "Play" and "Pause", but rather have a single key for both functions (thanks to Stefan Hofmann for suggesting to implement support for such remote controls). - The new option "Setup/Replay/Pause on mark set" can be used to activate automatically going into Pause mode if an editing mark is set during replay (suggested by Andre Weidemann). - When regenerating the index of a recording, the frame rate stored in the info file is now automatically fixed if it differs from the value detected by the frame detector. - Fixed creating the edited version directory if a relative file name is given in the call to 'vdr --edit' (the '/video' part was stripped from the given file name even if it wasn't there). - The new option "Setup/Replay/Progress display time" can be used to activate automatically displaying the progress display whenever replay of a recording is started (suggested by Stefan Blochberger). - Changed reading and writing of floating point numbers into configuration files to make it independent of the decimal point used in the current locale. All calls to atof() have been replaced with the new function atod(), which makes sure the string representation of a floating point number using a '.' as decimal point will be handled correctly, even if the locale in use expects a ',' as the decimal point. Plugins that read floating point numbers from their own configuration files will also need to use atod() for this, or use a method of their own (this is not necessary if values are stored in VDR's setup.conf file, because VDR takes care of this). The reason for these changes is that floating point numbers presented to the user shall be displayed in the way defined by the current locale (suggested by Stefan Blochberger). If you use plugins that store floating point values in configuration files of their own and have not yet been adapted to this change, you should set export LC_NUMERIC=C before running VDR. Otherwise your plugin's configuration data may not be read or written correctly. - The new functions SetItemEvent(), SetItemTimer(), SetItemChannel() and SetItemRecording() of the cSkinDisplayMenu class can be reimplemented by skin plugins to display these items in a more elaborate way than just a simple line of text.
This commit is contained in:
parent
beffcabc81
commit
5109addf9c
44
CONTRIBUTORS
44
CONTRIBUTORS
@ -229,6 +229,8 @@ Stefan Huelswitt <s.huelswitt@gmx.de>
|
|||||||
for a patch that was used to implement the --localedir option
|
for a patch that was used to implement the --localedir option
|
||||||
for reporting a problem with updating CA descriptors in transfer mode on full
|
for reporting a problem with updating CA descriptors in transfer mode on full
|
||||||
featured DVB cards
|
featured DVB cards
|
||||||
|
for pointing out a bug in handling lowercase polarization characters in channel
|
||||||
|
definitions if no DiSEqC is used
|
||||||
|
|
||||||
Ulrich Röder <roeder@efr-net.de>
|
Ulrich Röder <roeder@efr-net.de>
|
||||||
for pointing out that there are channels that have a symbol rate higher than 27500
|
for pointing out that there are channels that have a symbol rate higher than 27500
|
||||||
@ -1774,6 +1776,8 @@ Lucian Muresan <lucianm@users.sourceforge.net>
|
|||||||
for reporting duplicate texts in i18n.c
|
for reporting duplicate texts in i18n.c
|
||||||
for suggesting to use 'gettext' for internationalization
|
for suggesting to use 'gettext' for internationalization
|
||||||
for exporting some libsi functions
|
for exporting some libsi functions
|
||||||
|
for suggesting to add functions to cDevice that allow derived output devices to
|
||||||
|
implement scaling the video to a given size and location
|
||||||
|
|
||||||
Mattias Grönlund <Mattias@Gronlund.net>
|
Mattias Grönlund <Mattias@Gronlund.net>
|
||||||
for pointing out a missing cleanup at program exit in case there is a problem
|
for pointing out a missing cleanup at program exit in case there is a problem
|
||||||
@ -1976,6 +1980,7 @@ Ville Skytt
|
|||||||
for pointing out that the variable HasSnr was unused in cDvbTuner::GetSignalQuality()
|
for pointing out that the variable HasSnr was unused in cDvbTuner::GetSignalQuality()
|
||||||
for fixing cConfig::Load() for g++ version 4.7.0
|
for fixing cConfig::Load() for g++ version 4.7.0
|
||||||
for fixing some typos in HISTORY and CONTRIBUTORS
|
for fixing some typos in HISTORY and CONTRIBUTORS
|
||||||
|
for fixing some spellings in osd.h and svdrp.c
|
||||||
|
|
||||||
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
|
||||||
@ -2224,6 +2229,10 @@ Andr
|
|||||||
for suggesting that the primary device should only be avoided for recording if
|
for suggesting that the primary device should only be avoided for recording if
|
||||||
it is an old SD full featured card
|
it is an old SD full featured card
|
||||||
for his support in using convert/ffmpeg in the pic2mpg script of the 'pictures' plugin
|
for his support in using convert/ffmpeg in the pic2mpg script of the 'pictures' plugin
|
||||||
|
for requesting a way of getting to the very end of an edited recording, since version
|
||||||
|
1.7.32 no longer generates a mark at that point
|
||||||
|
for suggesting to automatically go into Pause mode if an editing mark is set during
|
||||||
|
replay
|
||||||
|
|
||||||
Jürgen Schilling <juergen_schilling@web.de>
|
Jürgen Schilling <juergen_schilling@web.de>
|
||||||
for reporting that color buttons were displayed in the recording info menu if it
|
for reporting that color buttons were displayed in the recording info menu if it
|
||||||
@ -2265,6 +2274,8 @@ Alexander Hans <cleditor@arcor.de>
|
|||||||
for reporting that the "'1' for encrypted radio channels" part in the description
|
for reporting that the "'1' for encrypted radio channels" part in the description
|
||||||
of the VPID in vdr.5 is obsolete
|
of the VPID in vdr.5 is obsolete
|
||||||
for a patch that was used to implement storing the channel name in info.vdr
|
for a patch that was used to implement storing the channel name in info.vdr
|
||||||
|
for making the SVDRP command HITK discard any keys if the remote control is currently
|
||||||
|
turned off
|
||||||
|
|
||||||
Daniel Karsubka <dkar@gmx.de>
|
Daniel Karsubka <dkar@gmx.de>
|
||||||
for suggesting to write the epg.data file when VDR exits
|
for suggesting to write the epg.data file when VDR exits
|
||||||
@ -2626,6 +2637,9 @@ Sundararaj Reel <sundararaj.reel@googlemail.com>
|
|||||||
that might inadvertently be called with a 'char *' as the second argument on some
|
that might inadvertently be called with a 'char *' as the second argument on some
|
||||||
compilers and cause a crash
|
compilers and cause a crash
|
||||||
for reporting a possible memory leak in SI::StructureLoop::getNextAsPointer()
|
for reporting a possible memory leak in SI::StructureLoop::getNextAsPointer()
|
||||||
|
for making the TDT EIT filter always be set, because otherwise when turning on using
|
||||||
|
the transponder time in the Setup menu, it would only be used after the next restart
|
||||||
|
of VDR
|
||||||
|
|
||||||
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
|
||||||
@ -2728,6 +2742,8 @@ Manuel Reimer <Manuel.Reimer@gmx.de>
|
|||||||
contains only the address of the local host
|
contains only the address of the local host
|
||||||
for a patch that was used as a base for making editing marks be updated every 10
|
for a patch that was used as a base for making editing marks be updated every 10
|
||||||
seconds during replay
|
seconds during replay
|
||||||
|
for suggesting to synchronize system time to the transponder time using adjtime() in
|
||||||
|
order to avoid discontinuities
|
||||||
|
|
||||||
Rene van den Braken <rene@vandenbraken.name>
|
Rene van den Braken <rene@vandenbraken.name>
|
||||||
for reporting a bug in writing the PCR pid into the PMT in
|
for reporting a bug in writing the PCR pid into the PMT in
|
||||||
@ -2760,6 +2776,8 @@ Lars Hanisch <dvb@flensrocker.de>
|
|||||||
for a patch that was used to implement SCR (Satellite Channel Routing)
|
for a patch that was used to implement SCR (Satellite Channel Routing)
|
||||||
for implementing the SVDRP command 'UPDR'
|
for implementing the SVDRP command 'UPDR'
|
||||||
for reporting that the SVDRP command UPDR didn't update the global recordings list
|
for reporting that the SVDRP command UPDR didn't update the global recordings list
|
||||||
|
for fixing a typo in skins.h
|
||||||
|
for fixing some #include statements in plugins to use <vdr/...> instead of "vdr/..."
|
||||||
|
|
||||||
Alex Lasnier <alex@fepg.org>
|
Alex Lasnier <alex@fepg.org>
|
||||||
for adding tuning support for ATSC devices
|
for adding tuning support for ATSC devices
|
||||||
@ -2834,6 +2852,7 @@ Juergen Lock <vdr-l@jelal.kn-bremen.de>
|
|||||||
for fixing cUnbufferedFile::Seek() in case it is compiled without USE_FADVISE
|
for fixing cUnbufferedFile::Seek() in case it is compiled without USE_FADVISE
|
||||||
for reporting a problem with EPG scan on systems with only a single DVB device that
|
for reporting a problem with EPG scan on systems with only a single DVB device that
|
||||||
use software output
|
use software output
|
||||||
|
for fixing calling iconv_close() only with a valid iconv_t value
|
||||||
|
|
||||||
Sergiu Dotenco <sergiu.dotenco@googlemail.com>
|
Sergiu Dotenco <sergiu.dotenco@googlemail.com>
|
||||||
for reporting a missing initialization in sDvbSpuRect
|
for reporting a missing initialization in sDvbSpuRect
|
||||||
@ -2958,7 +2977,7 @@ Oliver Schinagl <oliver@schinagl.nl>
|
|||||||
for a patch that was used to implement the setup options "OSD/Color key [0123]"
|
for a patch that was used to implement the setup options "OSD/Color key [0123]"
|
||||||
|
|
||||||
Andrey Pridvorov <ua0lnj@bk.ru>
|
Andrey Pridvorov <ua0lnj@bk.ru>
|
||||||
for reporting a problem with detecting frames in MPEG 4 video, and pointing towards
|
for reporting a problem with detecting frames in H.264 video, and pointing towards
|
||||||
a better way of doing it
|
a better way of doing it
|
||||||
|
|
||||||
Jens Vogel <jens.vogel@akjv.de>
|
Jens Vogel <jens.vogel@akjv.de>
|
||||||
@ -2970,6 +2989,29 @@ S
|
|||||||
for a patch that was used to move cleaning up the EPG data and writing the epg.data
|
for a patch that was used to move cleaning up the EPG data and writing the epg.data
|
||||||
file into a separate thread to avoid sluggish response to user input on slow systems
|
file into a separate thread to avoid sluggish response to user input on slow systems
|
||||||
for fixing sorting folders before recordings in case of UTF-8
|
for fixing sorting folders before recordings in case of UTF-8
|
||||||
|
for reporting that cCuttingThread::GetPendingPackets() should get only non-video
|
||||||
|
packets
|
||||||
|
for pointing out that the name H264 should be used instead of MPEG4
|
||||||
|
for pointing out that the cutter should only increment the TS continuity counter for
|
||||||
|
packets that have a payload
|
||||||
|
for pointing out that when adjusting the DTS values in the cutter, it hase to compensate
|
||||||
|
for dropped B-frames
|
||||||
|
for simplifying calculating the PTS offset in cPtsFixer::Fix() and fixing the overflow
|
||||||
|
handling of PCR values
|
||||||
|
|
||||||
Peter Münster <pmlists@free.fr>
|
Peter Münster <pmlists@free.fr>
|
||||||
for fixing 'make install' to not overwrite existing configuration files
|
for fixing 'make install' to not overwrite existing configuration files
|
||||||
|
|
||||||
|
Mike Hay <mike.hay@linenshorts.com>
|
||||||
|
for reporting a problem with handling the case of the polarization character in
|
||||||
|
channel definitions if no DiSEqC is used
|
||||||
|
|
||||||
|
Stefan Hofmann <stefan.hofmann@t-online.de>
|
||||||
|
for suggesting to implement support for remote controls that only have a combined
|
||||||
|
"Play/Pause" key instead of separate keys for "Play" and "Pause"
|
||||||
|
|
||||||
|
Stefan Blochberger <Stefan.Blochberger@gmx.de>
|
||||||
|
for suggesting to automatically display the progress display whenever replay of a
|
||||||
|
recording is started
|
||||||
|
for suggesting that floating point numbers presented to the user shall be displayed
|
||||||
|
in the way defined by the current locale
|
||||||
|
84
HISTORY
84
HISTORY
@ -7245,7 +7245,7 @@ Video Disk Recorder Revision History
|
|||||||
- Decreased the ring buffer put/get trigger sizes from 1/3 to 1/10.
|
- Decreased the ring buffer put/get trigger sizes from 1/3 to 1/10.
|
||||||
- The script given to VDR with the '-r' option is now also called whenever a
|
- The script given to VDR with the '-r' option is now also called whenever a
|
||||||
recording is deleted (thanks to Alexander Wenzel).
|
recording is deleted (thanks to Alexander Wenzel).
|
||||||
- Improved detecting frames in MPEG 4 video (reported by Andrey Pridvorov).
|
- Improved detecting frames in H.264 video (reported by Andrey Pridvorov).
|
||||||
- cPatPmtParser::ParsePmt() now also recognizes stream type 0x81 as "AC3", so that
|
- cPatPmtParser::ParsePmt() now also recognizes stream type 0x81 as "AC3", so that
|
||||||
recordings that have been converted from the old PES format to TS can be played
|
recordings that have been converted from the old PES format to TS can be played
|
||||||
(suggested by Jens Vogel).
|
(suggested by Jens Vogel).
|
||||||
@ -7305,7 +7305,7 @@ Video Disk Recorder Revision History
|
|||||||
Sundararaj Reel).
|
Sundararaj Reel).
|
||||||
- Fixed handling timers in case an event is modified and "phased out" while the timer
|
- Fixed handling timers in case an event is modified and "phased out" while the timer
|
||||||
is recording.
|
is recording.
|
||||||
- Improved frame detection by parsing just far enough into the MPEG-4 NAL units to get
|
- Improved frame detection by parsing just far enough into the H.264 NAL units to get
|
||||||
the necessary information about frames and slices.
|
the necessary information about frames and slices.
|
||||||
- The initial syncing of the frame detector is now done immediately after the first
|
- The initial syncing of the frame detector is now done immediately after the first
|
||||||
complete GOP has been seen. This makes recordings and especially pausing live video
|
complete GOP has been seen. This makes recordings and especially pausing live video
|
||||||
@ -7334,7 +7334,85 @@ Video Disk Recorder Revision History
|
|||||||
simply mark a position, but have no effect on the actual cutting process.
|
simply mark a position, but have no effect on the actual cutting process.
|
||||||
- When positioned at an offset where two (or more) editing marks are placed on top
|
- When positioned at an offset where two (or more) editing marks are placed on top
|
||||||
of each other, the '4' key moves the first one of them to the left, while the '6'
|
of each other, the '4' key moves the first one of them to the left, while the '6'
|
||||||
key moves the last one of them to the right. The '7' and '9' key handle multiple
|
key moves the last one of them to the right. The '7' and '9' keys handle multiple
|
||||||
marks at the same place as if it were one single mark.
|
marks at the same place as if it were one single mark.
|
||||||
- Modified editing marks are now written to disk whenever the replay progress display
|
- Modified editing marks are now written to disk whenever the replay progress display
|
||||||
gets hidden (thanks to Christoph Haubrich).
|
gets hidden (thanks to Christoph Haubrich).
|
||||||
|
|
||||||
|
2012-12-08: Version 1.7.33
|
||||||
|
|
||||||
|
- In order to be able to play TS recordings from other sources, in which there is
|
||||||
|
more than one PMT PID in the PAT, 'int cPatPmtParser::PatPmt(void)' has been changed
|
||||||
|
to 'bool cPatPmtParser::IsPatPmt(int Pid)'.
|
||||||
|
- Fixed learning remote control keys with the LCARS skin.
|
||||||
|
- Updated the Macedonian OSD texts (thanks to Dimitar Petrovski).
|
||||||
|
- Fixed getting only non-video packets in cCuttingThread::GetPendingPackets() (reported
|
||||||
|
by Sören Moch).
|
||||||
|
- Changed all occurrences of MPEG4 to H264 (pointed out by Sören Moch).
|
||||||
|
- Fixed getting the number of editing sequences in case the last sequence has no actual
|
||||||
|
end mark.
|
||||||
|
- The cutter now only increments the TS continuity counter for packets that have a
|
||||||
|
payload (pointed out by Sören Moch).
|
||||||
|
- Fixed adjusting the DTS values in the cutter, to compensate for dropped B-frames
|
||||||
|
(pointed out by Sören Moch).
|
||||||
|
- Fixed a typo in skins.h (thanks to Lars Hanisch).
|
||||||
|
- Simplified calculating the PTS offset in cPtsFixer::Fix() and fixed the overflow
|
||||||
|
handling of PCR values (thanks to Sören Moch).
|
||||||
|
- Fixed calling iconv_close() only with a valid iconv_t value (thanks to Juergen Lock).
|
||||||
|
- Fixed faulty opening of the Recordings menu when pressing the Play key during normal
|
||||||
|
live viewing mode in case there is a "last viewed" recording.
|
||||||
|
- Fixed some #include statements in plugins to use <vdr/...> instead of "vdr/..."
|
||||||
|
(thanks to Lars Hanisch).
|
||||||
|
- Fixed some spellings in osd.h and svdrp.c (thanks to Ville Skyttä).
|
||||||
|
- Fixed handling lowercase polarization characters in channel definitions if no DiSEqC
|
||||||
|
is used (reported by Mike Hay, actual bug pointed out by Stefan Huelswitt).
|
||||||
|
- Synchronizing system time to the transponder time is now done using adjtime() in order
|
||||||
|
to avoid discontinuities (suggested by Manuel Reimer). If the time difference is more
|
||||||
|
than 10 seconds, stime() is still used to do the initial sync.
|
||||||
|
- The '7' and '9' keys now jump to the very beginning or end, respectively, of the
|
||||||
|
recording, even if there is no mark set at that point (following a request from
|
||||||
|
Andre Weidemann).
|
||||||
|
- Now always setting the TDT EIT filter, because otherwise when turning on using the
|
||||||
|
transponder time in the Setup menu, it would only be used after the next restart
|
||||||
|
of VDR (thanks to Sundararaj Reel).
|
||||||
|
- The new functions cDevice::CanScaleVideo() and cDevice::ScaleVideo() can be used by
|
||||||
|
derived output devices to implement scaling the video to a given size and location
|
||||||
|
(based on a suggestion by Lucian Muresan).
|
||||||
|
- The SVDRP command HITK now discards any keys if the remote control is currently
|
||||||
|
turned off (thanks to Alexander Hans).
|
||||||
|
- The new remote control key "Play/Pause" can be used with remote controls that don't
|
||||||
|
have separate keys for "Play" and "Pause", but rather have a single key for both
|
||||||
|
functions (thanks to Stefan Hofmann for suggesting to implement support for such
|
||||||
|
remote controls).
|
||||||
|
- The new option "Setup/Replay/Pause on mark set" can be used to activate automatically
|
||||||
|
going into Pause mode if an editing mark is set during replay (suggested by Andre
|
||||||
|
Weidemann).
|
||||||
|
- When regenerating the index of a recording, the frame rate stored in the info file
|
||||||
|
is now automatically fixed if it differs from the value detected by the frame
|
||||||
|
detector.
|
||||||
|
- Fixed creating the edited version directory if a relative file name is given in
|
||||||
|
the call to 'vdr --edit' (the '/video' part was stripped from the given file name
|
||||||
|
even if it wasn't there).
|
||||||
|
- The new option "Setup/Replay/Progress display time" can be used to activate
|
||||||
|
automatically displaying the progress display whenever replay of a recording is
|
||||||
|
started (suggested by Stefan Blochberger).
|
||||||
|
- Changed reading and writing of floating point numbers into configuration files to
|
||||||
|
make it independent of the decimal point used in the current locale. All calls to
|
||||||
|
atof() have been replaced with the new function atod(), which makes sure the string
|
||||||
|
representation of a floating point number using a '.' as decimal point will be
|
||||||
|
handled correctly, even if the locale in use expects a ',' as the decimal point.
|
||||||
|
Plugins that read floating point numbers from their own configuration files will
|
||||||
|
also need to use atod() for this, or use a method of their own (this is not necessary
|
||||||
|
if values are stored in VDR's setup.conf file, because VDR takes care of this).
|
||||||
|
The reason for these changes is that floating point numbers presented to the user
|
||||||
|
shall be displayed in the way defined by the current locale (suggested by Stefan
|
||||||
|
Blochberger).
|
||||||
|
If you use plugins that store floating point values in configuration files of their
|
||||||
|
own and have not yet been adapted to this change, you should set
|
||||||
|
export LC_NUMERIC=C
|
||||||
|
before running VDR. Otherwise your plugin's configuration data may not be read or
|
||||||
|
written correctly.
|
||||||
|
- The new functions SetItemEvent(), SetItemTimer(), SetItemChannel() and
|
||||||
|
SetItemRecording() of the cSkinDisplayMenu class can be reimplemented by skin
|
||||||
|
plugins to display these items in a more elaborate way than just a simple line of
|
||||||
|
text.
|
||||||
|
14
MANUAL
14
MANUAL
@ -39,6 +39,7 @@ Version 1.6
|
|||||||
|
|
||||||
Info display information on the currently viewed programme or recording,
|
Info display information on the currently viewed programme or recording,
|
||||||
or on the current item in a menu
|
or on the current item in a menu
|
||||||
|
Play/Pause combined key to resume or pause replay, or pause live video
|
||||||
Play resume normal replay
|
Play resume normal replay
|
||||||
Pause pause replay or live video
|
Pause pause replay or live video
|
||||||
Stop stop replay
|
Stop stop replay
|
||||||
@ -365,7 +366,9 @@ Version 1.6
|
|||||||
- 4, 6 Move an editing mark back and forward. You need to first jump to
|
- 4, 6 Move an editing mark back and forward. You need to first jump to
|
||||||
an editing mark for this to work.
|
an editing mark for this to work.
|
||||||
- 7, 9 Jump back and forward between editing marks. Replay goes into still
|
- 7, 9 Jump back and forward between editing marks. Replay goes into still
|
||||||
mode after jumping to a mark.
|
mode after jumping to a mark. If the current position is at the
|
||||||
|
first or last mark, or if there are no marks at all, these keys
|
||||||
|
jump to the very beginning or end, respectively, of the recording.
|
||||||
- 8 Positions replay at a point 3 seconds before the current or next
|
- 8 Positions replay at a point 3 seconds before the current or next
|
||||||
"begin" mark and starts replay.
|
"begin" mark and starts replay.
|
||||||
- 2 Start the actual cutting process.
|
- 2 Start the actual cutting process.
|
||||||
@ -879,6 +882,15 @@ Version 1.6
|
|||||||
Defines whether the replay progress display shows the
|
Defines whether the replay progress display shows the
|
||||||
remaining time or the total length of the recording.
|
remaining time or the total length of the recording.
|
||||||
|
|
||||||
|
Progress display time (s) = 0
|
||||||
|
Defines how long (in seconds) the progress display is shown
|
||||||
|
when replay of a recording is started. The default value of 0
|
||||||
|
means that it will not be shown.
|
||||||
|
|
||||||
|
Pause replay when setting mark = no
|
||||||
|
Defines whether the player automatically goes into Pause
|
||||||
|
mode when setting an editing mark.
|
||||||
|
|
||||||
Resume ID = 0 Defines an additional ID that can be used in a multi user
|
Resume ID = 0 Defines an additional ID that can be used in a multi user
|
||||||
environment, so that every user has his/her own resume
|
environment, so that every user has his/her own resume
|
||||||
files for each recording. The valid range is 0...99, with
|
files for each recording. The valid range is 0...99, with
|
||||||
|
@ -3,15 +3,15 @@
|
|||||||
*
|
*
|
||||||
* See the README file for copyright information and how to reach the author.
|
* See the README file for copyright information and how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: dvbhdffdevice.h 1.8 2012/11/05 08:49:29 kls Exp $
|
* $Id: dvbhdffdevice.h 1.9 2012/12/03 13:43:55 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __DVBHDFFDEVICE_H
|
#ifndef __DVBHDFFDEVICE_H
|
||||||
#define __DVBHDFFDEVICE_H
|
#define __DVBHDFFDEVICE_H
|
||||||
|
|
||||||
#include "hdffcmd.h"
|
#include "hdffcmd.h"
|
||||||
#include "vdr/dvbdevice.h"
|
#include <vdr/dvbdevice.h>
|
||||||
#include "vdr/dvbspu.h"
|
#include <vdr/dvbspu.h>
|
||||||
|
|
||||||
/// The cDvbHdFfDevice implements a DVB device which can be accessed through the Linux DVB driver API.
|
/// The cDvbHdFfDevice implements a DVB device which can be accessed through the Linux DVB driver API.
|
||||||
|
|
||||||
|
@ -3,14 +3,14 @@
|
|||||||
*
|
*
|
||||||
* See the README file for copyright information and how to reach the author.
|
* See the README file for copyright information and how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: dvbsdffdevice.h 2.13 2011/08/27 11:32:42 kls Exp $
|
* $Id: dvbsdffdevice.h 2.14 2012/12/03 13:43:55 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __DVBSDFFDEVICE_H
|
#ifndef __DVBSDFFDEVICE_H
|
||||||
#define __DVBSDFFDEVICE_H
|
#define __DVBSDFFDEVICE_H
|
||||||
|
|
||||||
#include "vdr/dvbdevice.h"
|
#include <vdr/dvbdevice.h>
|
||||||
#include "vdr/dvbspu.h"
|
#include <vdr/dvbspu.h>
|
||||||
|
|
||||||
/// The cDvbSdFfDevice implements a DVB device which can be accessed through the Linux DVB driver API.
|
/// The cDvbSdFfDevice implements a DVB device which can be accessed through the Linux DVB driver API.
|
||||||
|
|
||||||
|
@ -3,13 +3,13 @@
|
|||||||
*
|
*
|
||||||
* See the README file for copyright information and how to reach the author.
|
* See the README file for copyright information and how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: dvbsdffosd.h 2.1 2009/12/29 11:52:05 kls Exp $
|
* $Id: dvbsdffosd.h 2.2 2012/12/03 13:43:55 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __DVBSDFFODF_H
|
#ifndef __DVBSDFFODF_H
|
||||||
#define __DVBSDFFODF_H
|
#define __DVBSDFFODF_H
|
||||||
|
|
||||||
#include "vdr/osd.h"
|
#include <vdr/osd.h>
|
||||||
|
|
||||||
class cDvbOsdProvider : public cOsdProvider {
|
class cDvbOsdProvider : public cOsdProvider {
|
||||||
private:
|
private:
|
||||||
|
26
config.c
26
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.28 2012/09/15 11:52:03 kls Exp $
|
* $Id: config.c 2.31 2012/12/06 09:00:23 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
@ -458,6 +458,8 @@ cSetup::cSetup(void)
|
|||||||
MultiSpeedMode = 0;
|
MultiSpeedMode = 0;
|
||||||
ShowReplayMode = 0;
|
ShowReplayMode = 0;
|
||||||
ShowRemainingTime = 0;
|
ShowRemainingTime = 0;
|
||||||
|
ProgressDisplayTime = 0;
|
||||||
|
PauseOnMarkSet = 0;
|
||||||
ResumeID = 0;
|
ResumeID = 0;
|
||||||
CurrentChannel = -1;
|
CurrentChannel = -1;
|
||||||
CurrentVolume = MAXVOLUME;
|
CurrentVolume = MAXVOLUME;
|
||||||
@ -507,7 +509,7 @@ void cSetup::Store(const char *Name, int Value, const char *Plugin)
|
|||||||
|
|
||||||
void cSetup::Store(const char *Name, double &Value, const char *Plugin)
|
void cSetup::Store(const char *Name, double &Value, const char *Plugin)
|
||||||
{
|
{
|
||||||
Store(Name, cString::sprintf("%f", Value), Plugin);
|
Store(Name, dtoa(Value), Plugin);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool cSetup::Load(const char *FileName)
|
bool cSetup::Load(const char *FileName)
|
||||||
@ -628,24 +630,24 @@ bool cSetup::Parse(const char *Name, const char *Value)
|
|||||||
else if (!strcasecmp(Name, "UseDolbyDigital")) UseDolbyDigital = atoi(Value);
|
else if (!strcasecmp(Name, "UseDolbyDigital")) UseDolbyDigital = atoi(Value);
|
||||||
else if (!strcasecmp(Name, "ChannelInfoPos")) ChannelInfoPos = atoi(Value);
|
else if (!strcasecmp(Name, "ChannelInfoPos")) ChannelInfoPos = atoi(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 = atod(Value);
|
||||||
else if (!strcasecmp(Name, "OSDTopP")) OSDTopP = atof(Value);
|
else if (!strcasecmp(Name, "OSDTopP")) OSDTopP = atod(Value);
|
||||||
else if (!strcasecmp(Name, "OSDWidthP")) { OSDWidthP = atof(Value); ChkDoublePlausibility(OSDWidthP, 0.87); }
|
else if (!strcasecmp(Name, "OSDWidthP")) { OSDWidthP = atod(Value); ChkDoublePlausibility(OSDWidthP, 0.87); }
|
||||||
else if (!strcasecmp(Name, "OSDHeightP")) { OSDHeightP = atof(Value); ChkDoublePlausibility(OSDHeightP, 0.84); }
|
else if (!strcasecmp(Name, "OSDHeightP")) { OSDHeightP = atod(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, "OSDAspect")) OSDAspect = atod(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); ChkDoublePlausibility(FontOsdSizeP, 0.038); }
|
else if (!strcasecmp(Name, "FontOsdSizeP")) { FontOsdSizeP = atod(Value); ChkDoublePlausibility(FontOsdSizeP, 0.038); }
|
||||||
else if (!strcasecmp(Name, "FontSmlSizeP")) { FontSmlSizeP = atof(Value); ChkDoublePlausibility(FontSmlSizeP, 0.035); }
|
else if (!strcasecmp(Name, "FontSmlSizeP")) { FontSmlSizeP = atod(Value); ChkDoublePlausibility(FontSmlSizeP, 0.035); }
|
||||||
else if (!strcasecmp(Name, "FontFixSizeP")) { FontFixSizeP = atof(Value); ChkDoublePlausibility(FontFixSizeP, 0.031); }
|
else if (!strcasecmp(Name, "FontFixSizeP")) { FontFixSizeP = atod(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);
|
||||||
@ -658,6 +660,8 @@ bool cSetup::Parse(const char *Name, const char *Value)
|
|||||||
else if (!strcasecmp(Name, "MultiSpeedMode")) MultiSpeedMode = atoi(Value);
|
else if (!strcasecmp(Name, "MultiSpeedMode")) MultiSpeedMode = atoi(Value);
|
||||||
else if (!strcasecmp(Name, "ShowReplayMode")) ShowReplayMode = atoi(Value);
|
else if (!strcasecmp(Name, "ShowReplayMode")) ShowReplayMode = atoi(Value);
|
||||||
else if (!strcasecmp(Name, "ShowRemainingTime")) ShowRemainingTime = atoi(Value);
|
else if (!strcasecmp(Name, "ShowRemainingTime")) ShowRemainingTime = atoi(Value);
|
||||||
|
else if (!strcasecmp(Name, "ProgressDisplayTime")) ProgressDisplayTime= atoi(Value);
|
||||||
|
else if (!strcasecmp(Name, "PauseOnMarkSet")) PauseOnMarkSet = atoi(Value);
|
||||||
else if (!strcasecmp(Name, "ResumeID")) ResumeID = atoi(Value);
|
else if (!strcasecmp(Name, "ResumeID")) ResumeID = atoi(Value);
|
||||||
else if (!strcasecmp(Name, "CurrentChannel")) CurrentChannel = atoi(Value);
|
else if (!strcasecmp(Name, "CurrentChannel")) CurrentChannel = atoi(Value);
|
||||||
else if (!strcasecmp(Name, "CurrentVolume")) CurrentVolume = atoi(Value);
|
else if (!strcasecmp(Name, "CurrentVolume")) CurrentVolume = atoi(Value);
|
||||||
@ -761,6 +765,8 @@ bool cSetup::Save(void)
|
|||||||
Store("MultiSpeedMode", MultiSpeedMode);
|
Store("MultiSpeedMode", MultiSpeedMode);
|
||||||
Store("ShowReplayMode", ShowReplayMode);
|
Store("ShowReplayMode", ShowReplayMode);
|
||||||
Store("ShowRemainingTime", ShowRemainingTime);
|
Store("ShowRemainingTime", ShowRemainingTime);
|
||||||
|
Store("ProgressDisplayTime",ProgressDisplayTime);
|
||||||
|
Store("PauseOnMarkSet", PauseOnMarkSet);
|
||||||
Store("ResumeID", ResumeID);
|
Store("ResumeID", ResumeID);
|
||||||
Store("CurrentChannel", CurrentChannel);
|
Store("CurrentChannel", CurrentChannel);
|
||||||
Store("CurrentVolume", CurrentVolume);
|
Store("CurrentVolume", CurrentVolume);
|
||||||
|
12
config.h
12
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.54 2012/10/03 09:59:34 kls Exp $
|
* $Id: config.h 2.57 2012/12/05 11:33:20 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.32"
|
#define VDRVERSION "1.7.33"
|
||||||
#define VDRVERSNUM 10732 // Version * 10000 + Major * 100 + Minor
|
#define VDRVERSNUM 10733 // Version * 10000 + Major * 100 + Minor
|
||||||
|
|
||||||
// The plugin API's version number:
|
// The plugin API's version number:
|
||||||
|
|
||||||
#define APIVERSION "1.7.32"
|
#define APIVERSION "1.7.33"
|
||||||
#define APIVERSNUM 10732 // Version * 10000 + Major * 100 + Minor
|
#define APIVERSNUM 10733 // 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
|
||||||
@ -319,6 +319,8 @@ public:
|
|||||||
int MultiSpeedMode;
|
int MultiSpeedMode;
|
||||||
int ShowReplayMode;
|
int ShowReplayMode;
|
||||||
int ShowRemainingTime;
|
int ShowRemainingTime;
|
||||||
|
int ProgressDisplayTime;
|
||||||
|
int PauseOnMarkSet;
|
||||||
int ResumeID;
|
int ResumeID;
|
||||||
int CurrentChannel;
|
int CurrentChannel;
|
||||||
int CurrentVolume;
|
int CurrentVolume;
|
||||||
|
70
cutter.c
70
cutter.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: cutter.c 2.16 2012/11/18 12:09:00 kls Exp $
|
* $Id: cutter.c 2.21 2012/12/02 14:30:55 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "cutter.h"
|
#include "cutter.h"
|
||||||
@ -132,7 +132,7 @@ bool cDanglingPacketStripper::Process(uchar *Data, int Length, int64_t FirstPts)
|
|||||||
int Pid = TsPid(Data);
|
int Pid = TsPid(Data);
|
||||||
if (Pid == PATPID)
|
if (Pid == PATPID)
|
||||||
patPmtParser.ParsePat(Data, TS_SIZE);
|
patPmtParser.ParsePat(Data, TS_SIZE);
|
||||||
else if (Pid == patPmtParser.PmtPid())
|
else if (patPmtParser.IsPmtPid(Pid))
|
||||||
patPmtParser.ParsePmt(Data, TS_SIZE);
|
patPmtParser.ParsePmt(Data, TS_SIZE);
|
||||||
else {
|
else {
|
||||||
int64_t Pts = TsGetPts(Data, TS_SIZE);
|
int64_t Pts = TsGetPts(Data, TS_SIZE);
|
||||||
@ -154,8 +154,10 @@ bool cDanglingPacketStripper::Process(uchar *Data, int Length, int64_t FirstPts)
|
|||||||
class cPtsFixer {
|
class cPtsFixer {
|
||||||
private:
|
private:
|
||||||
int delta; // time between two frames
|
int delta; // time between two frames
|
||||||
int64_t last; // the last (i.e. highest) video PTS value seen
|
int64_t deltaDts; // the difference between two consecutive DTS values (may differ from 'delta' in case of multiple fields per frame)
|
||||||
int64_t offset; // offset to add to PTS values
|
int64_t lastPts; // the video PTS of the last frame (in display order)
|
||||||
|
int64_t lastDts; // the last video DTS value seen
|
||||||
|
int64_t offset; // offset to add to all timestamps
|
||||||
bool fixCounters; // controls fixing the TS continuity counters (only from the second CutIn up)
|
bool fixCounters; // controls fixing the TS continuity counters (only from the second CutIn up)
|
||||||
uchar counter[MAXPID]; // the TS continuity counter for each PID
|
uchar counter[MAXPID]; // the TS continuity counter for each PID
|
||||||
cPatPmtParser patPmtParser;
|
cPatPmtParser patPmtParser;
|
||||||
@ -168,7 +170,9 @@ public:
|
|||||||
cPtsFixer::cPtsFixer(void)
|
cPtsFixer::cPtsFixer(void)
|
||||||
{
|
{
|
||||||
delta = 0;
|
delta = 0;
|
||||||
last = -1;
|
deltaDts = 0;
|
||||||
|
lastPts = -1;
|
||||||
|
lastDts = -1;
|
||||||
offset = -1;
|
offset = -1;
|
||||||
fixCounters = false;
|
fixCounters = false;
|
||||||
memset(counter, 0x00, sizeof(counter));
|
memset(counter, 0x00, sizeof(counter));
|
||||||
@ -186,31 +190,44 @@ void cPtsFixer::Fix(uchar *Data, int Length, bool CutIn)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// Determine the PTS offset at the beginning of each sequence (except the first one):
|
// Determine the PTS offset at the beginning of each sequence (except the first one):
|
||||||
if (CutIn && last >= 0) {
|
if (CutIn && lastPts >= 0) {
|
||||||
int64_t Pts = TsGetPts(Data, Length);
|
int64_t Pts = TsGetPts(Data, Length);
|
||||||
if (Pts >= 0) {
|
if (Pts >= 0)
|
||||||
// offset is calculated so that Pts + offset results in last + delta:
|
offset = (lastPts + delta - Pts) & MAX33BIT; // offset is calculated so that Pts + offset results in lastPts + delta
|
||||||
offset = Pts - PtsAdd(last, delta);
|
|
||||||
if (offset <= 0)
|
|
||||||
offset = -offset;
|
|
||||||
else
|
|
||||||
offset = MAX33BIT + 1 - offset;
|
|
||||||
}
|
|
||||||
fixCounters = true;
|
fixCounters = true;
|
||||||
}
|
}
|
||||||
// Keep track of the highest video PTS:
|
// Keep track of the highest video PTS:
|
||||||
|
bool GotPts = false;
|
||||||
|
int64_t PrevDts = lastDts;
|
||||||
uchar *p = Data;
|
uchar *p = Data;
|
||||||
int len = Length;
|
int len = Length;
|
||||||
while (len >= TS_SIZE && *p == TS_SYNC_BYTE) {
|
while (len >= TS_SIZE && *p == TS_SYNC_BYTE) {
|
||||||
int Pid = TsPid(p);
|
int Pid = TsPid(p);
|
||||||
if (Pid == patPmtParser.Vpid()) {
|
if (Pid == patPmtParser.Vpid()) {
|
||||||
int64_t Pts = PtsAdd(TsGetPts(p, TS_SIZE), offset); // offset is taken into account here, to make last have the "new" value already!
|
if (!GotPts) { // in case of multiple fields per frame, the offset is calculated only with the first one
|
||||||
if (Pts >= 0 && (last < 0 || PtsDiff(last, Pts) > 0))
|
int64_t Pts = TsGetPts(p, TS_SIZE);
|
||||||
last = Pts;
|
if (Pts >= 0) {
|
||||||
|
if (offset >= 0)
|
||||||
|
Pts = PtsAdd(Pts, offset); // offset is taken into account here, to make lastPts have the "new" value already!
|
||||||
|
if (lastPts < 0 || PtsDiff(lastPts, Pts) > 0)
|
||||||
|
lastPts = Pts;
|
||||||
|
}
|
||||||
|
GotPts = true;
|
||||||
|
}
|
||||||
|
if (!CutIn) {
|
||||||
|
int64_t Dts = TsGetDts(p, TS_SIZE);
|
||||||
|
if (Dts >= 0) {
|
||||||
|
if (offset >= 0)
|
||||||
|
Dts = PtsAdd(Dts, offset); // offset is taken into account here, to make lastDts have the "new" value already!
|
||||||
|
deltaDts = PtsDiff(PrevDts, Dts);
|
||||||
|
PrevDts = Dts;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// Adjust the TS continuity counter:
|
// Adjust the TS continuity counter:
|
||||||
if (fixCounters) {
|
if (fixCounters) {
|
||||||
counter[Pid] = (counter[Pid] + 1) & TS_CONT_CNT_MASK;
|
if (TsHasPayload(p))
|
||||||
|
counter[Pid] = (counter[Pid] + 1) & TS_CONT_CNT_MASK;
|
||||||
TsSetContinuityCounter(p, counter[Pid]);
|
TsSetContinuityCounter(p, counter[Pid]);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -228,12 +245,18 @@ void cPtsFixer::Fix(uchar *Data, int Length, bool CutIn)
|
|||||||
if (Pts >= 0)
|
if (Pts >= 0)
|
||||||
TsSetPts(p, TS_SIZE, PtsAdd(Pts, offset));
|
TsSetPts(p, TS_SIZE, PtsAdd(Pts, offset));
|
||||||
int64_t Dts = TsGetDts(p, TS_SIZE);
|
int64_t Dts = TsGetDts(p, TS_SIZE);
|
||||||
if (Dts >= 0)
|
if (Dts >= 0) {
|
||||||
TsSetDts(p, TS_SIZE, PtsAdd(Dts, offset));
|
if (CutIn) {
|
||||||
|
lastDts = PtsAdd(lastDts, deltaDts);
|
||||||
|
TsSetDts(p, TS_SIZE, lastDts);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
TsSetDts(p, TS_SIZE, PtsAdd(Dts, offset));
|
||||||
|
}
|
||||||
int64_t Pcr = TsGetPcr(p);
|
int64_t Pcr = TsGetPcr(p);
|
||||||
if (Pcr >= 0) {
|
if (Pcr >= 0) {
|
||||||
int64_t NewPcr = Pcr + offset * PCRFACTOR;
|
int64_t NewPcr = Pcr + offset * PCRFACTOR;
|
||||||
if (NewPcr >= MAX27MHZ)
|
if (NewPcr > MAX27MHZ)
|
||||||
NewPcr -= MAX27MHZ + 1;
|
NewPcr -= MAX27MHZ + 1;
|
||||||
TsSetPcr(p, NewPcr);
|
TsSetPcr(p, NewPcr);
|
||||||
}
|
}
|
||||||
@ -241,6 +264,7 @@ void cPtsFixer::Fix(uchar *Data, int Length, bool CutIn)
|
|||||||
len -= TS_SIZE;
|
len -= TS_SIZE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
lastDts = PrevDts;
|
||||||
}
|
}
|
||||||
|
|
||||||
// --- cCuttingThread --------------------------------------------------------
|
// --- cCuttingThread --------------------------------------------------------
|
||||||
@ -408,8 +432,10 @@ void cCuttingThread::GetPendingPackets(uchar *Data, int &Length, int Index, int6
|
|||||||
int Pid = TsPid(p);
|
int Pid = TsPid(p);
|
||||||
if (Pid == PATPID)
|
if (Pid == PATPID)
|
||||||
PatPmtParser.ParsePat(p, TS_SIZE);
|
PatPmtParser.ParsePat(p, TS_SIZE);
|
||||||
else if (Pid == PatPmtParser.PmtPid())
|
else if (PatPmtParser.IsPmtPid(Pid)) {
|
||||||
PatPmtParser.ParsePmt(p, TS_SIZE);
|
PatPmtParser.ParsePmt(p, TS_SIZE);
|
||||||
|
Processed[PatPmtParser.Vpid()] = true; // we only want non-video packets
|
||||||
|
}
|
||||||
else if (!Processed[Pid]) {
|
else if (!Processed[Pid]) {
|
||||||
int64_t Pts = TsGetPts(p, TS_SIZE);
|
int64_t Pts = TsGetPts(p, TS_SIZE);
|
||||||
if (Pts >= 0) {
|
if (Pts >= 0) {
|
||||||
|
6
device.c
6
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.69 2012/11/13 09:11:43 kls Exp $
|
* $Id: device.c 2.70 2012/11/19 09:59:09 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "device.h"
|
#include "device.h"
|
||||||
@ -1149,7 +1149,7 @@ void cDevice::StillPicture(const uchar *Data, int Length)
|
|||||||
int Pid = TsPid(Data);
|
int Pid = TsPid(Data);
|
||||||
if (Pid == PATPID)
|
if (Pid == PATPID)
|
||||||
patPmtParser.ParsePat(Data, TS_SIZE);
|
patPmtParser.ParsePat(Data, TS_SIZE);
|
||||||
else if (Pid == patPmtParser.PmtPid())
|
else if (patPmtParser.IsPmtPid(Pid))
|
||||||
patPmtParser.ParsePmt(Data, TS_SIZE);
|
patPmtParser.ParsePmt(Data, TS_SIZE);
|
||||||
else if (Pid == patPmtParser.Vpid()) {
|
else if (Pid == patPmtParser.Vpid()) {
|
||||||
if (TsPayloadStart(Data)) {
|
if (TsPayloadStart(Data)) {
|
||||||
@ -1486,7 +1486,7 @@ int cDevice::PlayTs(const uchar *Data, int Length, bool VideoOnly)
|
|||||||
if (PayloadOffset < TS_SIZE) {
|
if (PayloadOffset < TS_SIZE) {
|
||||||
if (Pid == PATPID)
|
if (Pid == PATPID)
|
||||||
patPmtParser.ParsePat(Data, TS_SIZE);
|
patPmtParser.ParsePat(Data, TS_SIZE);
|
||||||
else if (Pid == patPmtParser.PmtPid())
|
else if (patPmtParser.IsPmtPid(Pid))
|
||||||
patPmtParser.ParsePmt(Data, TS_SIZE);
|
patPmtParser.ParsePmt(Data, TS_SIZE);
|
||||||
else if (Pid == patPmtParser.Vpid()) {
|
else if (Pid == patPmtParser.Vpid()) {
|
||||||
isPlayingVideo = true;
|
isPlayingVideo = true;
|
||||||
|
29
device.h
29
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.41 2012/08/26 13:25:44 kls Exp $
|
* $Id: device.h 2.42 2012/12/04 11:52:58 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __DEVICE_H
|
#ifndef __DEVICE_H
|
||||||
@ -655,6 +655,33 @@ public:
|
|||||||
virtual bool IsPlayingVideo(void) const { return isPlayingVideo; }
|
virtual bool IsPlayingVideo(void) const { return isPlayingVideo; }
|
||||||
///< \return Returns true if the currently attached player has delivered
|
///< \return Returns true if the currently attached player has delivered
|
||||||
///< any video packets.
|
///< any video packets.
|
||||||
|
virtual cRect CanScaleVideo(const cRect &Rect, int Alignment = taCenter) { return cRect::Null; }
|
||||||
|
///< Asks the output device whether it can scale the currently shown video in
|
||||||
|
///< such a way that it fits into the given Rect, while retaining its proper
|
||||||
|
///< aspect ratio. If the scaled video doesn't exactly fit into Rect, Alignment
|
||||||
|
///< is used to determine how to align the actual rectangle with the requested
|
||||||
|
///< one. The actual rectangle can be smaller, larger or the same size as the
|
||||||
|
///< given Rect, and its location may differ, depending on the capabilities of
|
||||||
|
///< the output device, which may not be able to display a scaled video at
|
||||||
|
///< arbitrary sizes and locations. The device shall, however, do its best to
|
||||||
|
///< match the requested Rect as closely as possible, preferring a size and
|
||||||
|
///< location that fits completely into the requested Rect if possible.
|
||||||
|
///< Returns the rectangle that can actually be used when scaling the video.
|
||||||
|
///< A skin plugin using this function should rearrange its content according
|
||||||
|
///< to the rectangle returned from calling this function, and should especially
|
||||||
|
///< be prepared for cases where the returned rectangle is way off the requested
|
||||||
|
///< Rect, or even Null. In such cases, the skin may want to fall back to
|
||||||
|
///< working with full screen video.
|
||||||
|
///< If this device can't scale the video, a Null rectangle is returned (this
|
||||||
|
///< is also the default implementation).
|
||||||
|
virtual void ScaleVideo(const cRect &Rect = cRect::Null) {}
|
||||||
|
///< Scales the currently shown video in such a way that it fits into the given
|
||||||
|
///< Rect. Rect should be one retrieved through a previous call to
|
||||||
|
///< CanScaleVideo() (otherwise results may be undefined).
|
||||||
|
///< Even if video output is scaled, the functions GetVideoSize() and
|
||||||
|
///< GetOsdSize() must still return the same values as if in full screen mode!
|
||||||
|
///< If this device can't scale the video, nothing happens.
|
||||||
|
///< To restore full screen video, call this function with a Null rectangle.
|
||||||
virtual bool HasIBPTrickSpeed(void) { return false; }
|
virtual bool HasIBPTrickSpeed(void) { return false; }
|
||||||
///< Returns true if this device can handle all frames in 'fast forward'
|
///< Returns true if this device can handle all frames in 'fast forward'
|
||||||
///< trick speeds.
|
///< trick speeds.
|
||||||
|
10
dvbdevice.c
10
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.74 2012/10/07 11:11:30 kls Exp $
|
* $Id: dvbdevice.c 2.75 2012/12/03 14:07:01 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "dvbdevice.h"
|
#include "dvbdevice.h"
|
||||||
@ -261,16 +261,16 @@ bool cDvbTransponderParameters::Parse(const char *s)
|
|||||||
case 'C': s = ParseParameter(s, coderateH, CoderateValues); break;
|
case 'C': s = ParseParameter(s, coderateH, CoderateValues); break;
|
||||||
case 'D': s = ParseParameter(s, coderateL, CoderateValues); break;
|
case 'D': s = ParseParameter(s, coderateL, CoderateValues); break;
|
||||||
case 'G': s = ParseParameter(s, guard, GuardValues); break;
|
case 'G': s = ParseParameter(s, guard, GuardValues); break;
|
||||||
case 'H': polarization = *s++; break;
|
case 'H': polarization = 'H'; s++; break;
|
||||||
case 'I': s = ParseParameter(s, inversion, InversionValues); break;
|
case 'I': s = ParseParameter(s, inversion, InversionValues); break;
|
||||||
case 'L': polarization = *s++; break;
|
case 'L': polarization = 'L'; s++; break;
|
||||||
case 'M': s = ParseParameter(s, modulation, ModulationValues); break;
|
case 'M': s = ParseParameter(s, modulation, ModulationValues); break;
|
||||||
case 'O': s = ParseParameter(s, rollOff, RollOffValues); break;
|
case 'O': s = ParseParameter(s, rollOff, RollOffValues); break;
|
||||||
case 'P': s = ParseParameter(s, plpId); break;
|
case 'P': s = ParseParameter(s, plpId); break;
|
||||||
case 'R': polarization = *s++; break;
|
case 'R': polarization = 'R'; s++; break;
|
||||||
case 'S': s = ParseParameter(s, system, SystemValuesSat); break; // we only need the numerical value, so Sat or Terr doesn't matter
|
case 'S': s = ParseParameter(s, system, SystemValuesSat); break; // we only need the numerical value, so Sat or Terr doesn't matter
|
||||||
case 'T': s = ParseParameter(s, transmission, TransmissionValues); break;
|
case 'T': s = ParseParameter(s, transmission, TransmissionValues); break;
|
||||||
case 'V': polarization = *s++; break;
|
case 'V': polarization = 'V'; s++; break;
|
||||||
case 'Y': s = ParseParameter(s, hierarchy, HierarchyValues); break;
|
case 'Y': s = ParseParameter(s, hierarchy, HierarchyValues); break;
|
||||||
default: esyslog("ERROR: unknown parameter key '%c'", *s);
|
default: esyslog("ERROR: unknown parameter key '%c'", *s);
|
||||||
return false;
|
return false;
|
||||||
|
37
eit.c
37
eit.c
@ -8,10 +8,11 @@
|
|||||||
* 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.21 2012/08/25 11:13:00 kls Exp $
|
* $Id: eit.c 2.23 2012/12/04 11:10:10 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "eit.h"
|
#include "eit.h"
|
||||||
|
#include <sys/time.h>
|
||||||
#include "epg.h"
|
#include "epg.h"
|
||||||
#include "i18n.h"
|
#include "i18n.h"
|
||||||
#include "libsi/section.h"
|
#include "libsi/section.h"
|
||||||
@ -313,35 +314,48 @@ cEIT::cEIT(cSchedules *Schedules, int Source, u_char Tid, const u_char *Data, bo
|
|||||||
|
|
||||||
// --- cTDT ------------------------------------------------------------------
|
// --- cTDT ------------------------------------------------------------------
|
||||||
|
|
||||||
|
#define MAX_TIME_DIFF 1 // number of seconds the local time may differ from dvb time before making any corrections
|
||||||
|
#define MAX_ADJ_DIFF 10 // number of seconds the local time may differ from dvb time to allow smooth adjustment
|
||||||
|
#define ADJ_DELTA 300 // number of seconds between calls for smooth time adjustment
|
||||||
|
|
||||||
class cTDT : public SI::TDT {
|
class cTDT : public SI::TDT {
|
||||||
private:
|
private:
|
||||||
static cMutex mutex;
|
static cMutex mutex;
|
||||||
static int lastDiff;
|
static time_t lastAdj;
|
||||||
public:
|
public:
|
||||||
cTDT(const u_char *Data);
|
cTDT(const u_char *Data);
|
||||||
};
|
};
|
||||||
|
|
||||||
cMutex cTDT::mutex;
|
cMutex cTDT::mutex;
|
||||||
int cTDT::lastDiff = 0;
|
time_t cTDT::lastAdj = 0;
|
||||||
|
|
||||||
cTDT::cTDT(const u_char *Data)
|
cTDT::cTDT(const u_char *Data)
|
||||||
:SI::TDT(Data, false)
|
:SI::TDT(Data, false)
|
||||||
{
|
{
|
||||||
CheckParse();
|
CheckParse();
|
||||||
|
|
||||||
time_t sattim = getTime();
|
time_t dvbtim = getTime();
|
||||||
time_t loctim = time(NULL);
|
time_t loctim = time(NULL);
|
||||||
|
|
||||||
int diff = abs(sattim - loctim);
|
int diff = dvbtim - loctim;
|
||||||
if (diff > 2) {
|
if (abs(diff) > MAX_TIME_DIFF) {
|
||||||
mutex.Lock();
|
mutex.Lock();
|
||||||
if (abs(diff - lastDiff) < 3) {
|
if (abs(diff) > MAX_ADJ_DIFF) {
|
||||||
if (stime(&sattim) == 0)
|
if (stime(&dvbtim) == 0)
|
||||||
isyslog("system time changed from %s (%ld) to %s (%ld)", *TimeToString(loctim), loctim, *TimeToString(sattim), sattim);
|
isyslog("system time changed from %s (%ld) to %s (%ld)", *TimeToString(loctim), loctim, *TimeToString(dvbtim), dvbtim);
|
||||||
else
|
else
|
||||||
esyslog("ERROR while setting system time: %m");
|
esyslog("ERROR while setting system time: %m");
|
||||||
}
|
}
|
||||||
lastDiff = diff;
|
else if (time(NULL) - lastAdj > ADJ_DELTA) {
|
||||||
|
lastAdj = time(NULL);
|
||||||
|
timeval delta;
|
||||||
|
delta.tv_sec = diff;
|
||||||
|
delta.tv_usec = 0;
|
||||||
|
if (adjtime(&delta, NULL) == 0)
|
||||||
|
isyslog("system time adjustment initiated from %s (%ld) to %s (%ld)", *TimeToString(loctim), loctim, *TimeToString(dvbtim), dvbtim);
|
||||||
|
else
|
||||||
|
esyslog("ERROR while adjusting system time: %m");
|
||||||
|
}
|
||||||
mutex.Unlock();
|
mutex.Unlock();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -353,8 +367,7 @@ time_t cEitFilter::disableUntil = 0;
|
|||||||
cEitFilter::cEitFilter(void)
|
cEitFilter::cEitFilter(void)
|
||||||
{
|
{
|
||||||
Set(0x12, 0x40, 0xC0); // event info now&next actual/other TS (0x4E/0x4F), future actual/other TS (0x5X/0x6X)
|
Set(0x12, 0x40, 0xC0); // event info now&next actual/other TS (0x4E/0x4F), future actual/other TS (0x5X/0x6X)
|
||||||
if (Setup.SetSystemTime && Setup.TimeTransponder)
|
Set(0x14, 0x70); // TDT
|
||||||
Set(0x14, 0x70); // TDT
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void cEitFilter::SetDisableUntil(time_t Time)
|
void cEitFilter::SetDisableUntil(time_t Time)
|
||||||
|
@ -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: interface.c 2.1 2011/12/04 14:52:38 kls Exp $
|
* $Id: interface.c 2.2 2012/11/19 12:21:43 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "interface.h"
|
#include "interface.h"
|
||||||
@ -160,6 +160,7 @@ void cInterface::LearnKeys(void)
|
|||||||
dsyslog("remote control %s - %s", Remote->Name(), known ? "keys known" : "learning keys");
|
dsyslog("remote control %s - %s", Remote->Name(), known ? "keys known" : "learning keys");
|
||||||
if (!known) {
|
if (!known) {
|
||||||
cSkinDisplayMenu *DisplayMenu = Skins.Current()->DisplayMenu();
|
cSkinDisplayMenu *DisplayMenu = Skins.Current()->DisplayMenu();
|
||||||
|
DisplayMenu->SetMenuCategory(mcUnknown);
|
||||||
char Headline[256];
|
char Headline[256];
|
||||||
snprintf(Headline, sizeof(Headline), tr("Learning Remote Control Keys"));
|
snprintf(Headline, sizeof(Headline), tr("Learning Remote Control Keys"));
|
||||||
cRemote::Clear();
|
cRemote::Clear();
|
||||||
|
3
keys.c
3
keys.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: keys.c 2.1 2010/04/05 10:05:58 kls Exp $
|
* $Id: keys.c 2.2 2012/12/04 12:52:52 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "keys.h"
|
#include "keys.h"
|
||||||
@ -33,6 +33,7 @@ static tKey keyTable[] = { // "Up" and "Down" must be the first two keys!
|
|||||||
{ k8, "8" },
|
{ k8, "8" },
|
||||||
{ k9, "9" },
|
{ k9, "9" },
|
||||||
{ kInfo, trNOOP("Key$Info") },
|
{ kInfo, trNOOP("Key$Info") },
|
||||||
|
{ kPlayPause, trNOOP("Key$Play/Pause") },
|
||||||
{ kPlay, trNOOP("Key$Play") },
|
{ kPlay, trNOOP("Key$Play") },
|
||||||
{ kPause, trNOOP("Key$Pause") },
|
{ kPause, trNOOP("Key$Pause") },
|
||||||
{ kStop, trNOOP("Key$Stop") },
|
{ kStop, trNOOP("Key$Stop") },
|
||||||
|
3
keys.h
3
keys.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: keys.h 2.1 2010/04/05 10:06:04 kls Exp $
|
* $Id: keys.h 2.2 2012/12/04 12:51:25 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __KEYS_H
|
#ifndef __KEYS_H
|
||||||
@ -27,6 +27,7 @@ enum eKeys { // "Up" and "Down" must be the first two keys!
|
|||||||
kBlue,
|
kBlue,
|
||||||
k0, k1, k2, k3, k4, k5, k6, k7, k8, k9,
|
k0, k1, k2, k3, k4, k5, k6, k7, k8, k9,
|
||||||
kInfo,
|
kInfo,
|
||||||
|
kPlayPause, // combined Play/Pause key
|
||||||
kPlay,
|
kPlay,
|
||||||
kPause,
|
kPause,
|
||||||
kStop,
|
kStop,
|
||||||
|
182
menu.c
182
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.65 2012/11/18 13:07:53 kls Exp $
|
* $Id: menu.c 2.71 2012/12/07 13:48:15 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "menu.h"
|
#include "menu.h"
|
||||||
@ -284,6 +284,7 @@ public:
|
|||||||
virtual int Compare(const cListObject &ListObject) const;
|
virtual int Compare(const cListObject &ListObject) const;
|
||||||
virtual void Set(void);
|
virtual void Set(void);
|
||||||
cChannel *Channel(void) { return channel; }
|
cChannel *Channel(void) { return channel; }
|
||||||
|
virtual void SetMenuItem(cSkinDisplayMenu *DisplayMenu, int Index, bool Current, bool Selectable);
|
||||||
};
|
};
|
||||||
|
|
||||||
cMenuChannelItem::eChannelSortMode cMenuChannelItem::sortMode = csmNumber;
|
cMenuChannelItem::eChannelSortMode cMenuChannelItem::sortMode = csmNumber;
|
||||||
@ -323,6 +324,12 @@ void cMenuChannelItem::Set(void)
|
|||||||
SetText(buffer);
|
SetText(buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void cMenuChannelItem::SetMenuItem(cSkinDisplayMenu *DisplayMenu, int Index, bool Current, bool Selectable)
|
||||||
|
{
|
||||||
|
if (!DisplayMenu->SetItemChannel(channel, Index, Current, Selectable, sortMode == csmProvider))
|
||||||
|
DisplayMenu->SetItem(Text(), Index, Current, Selectable);
|
||||||
|
}
|
||||||
|
|
||||||
// --- cMenuChannels ---------------------------------------------------------
|
// --- cMenuChannels ---------------------------------------------------------
|
||||||
|
|
||||||
#define CHANNELNUMBERTIMEOUT 1000 //ms
|
#define CHANNELNUMBERTIMEOUT 1000 //ms
|
||||||
@ -1001,6 +1008,7 @@ public:
|
|||||||
virtual int Compare(const cListObject &ListObject) const;
|
virtual int Compare(const cListObject &ListObject) const;
|
||||||
virtual void Set(void);
|
virtual void Set(void);
|
||||||
cTimer *Timer(void) { return timer; }
|
cTimer *Timer(void) { return timer; }
|
||||||
|
virtual void SetMenuItem(cSkinDisplayMenu *DisplayMenu, int Index, bool Current, bool Selectable);
|
||||||
};
|
};
|
||||||
|
|
||||||
cMenuTimerItem::cMenuTimerItem(cTimer *Timer)
|
cMenuTimerItem::cMenuTimerItem(cTimer *Timer)
|
||||||
@ -1049,6 +1057,12 @@ void cMenuTimerItem::Set(void)
|
|||||||
File));
|
File));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void cMenuTimerItem::SetMenuItem(cSkinDisplayMenu *DisplayMenu, int Index, bool Current, bool Selectable)
|
||||||
|
{
|
||||||
|
if (!DisplayMenu->SetItemTimer(timer, Index, Current, Selectable))
|
||||||
|
DisplayMenu->SetItem(Text(), Index, Current, Selectable);
|
||||||
|
}
|
||||||
|
|
||||||
// --- cMenuTimers -----------------------------------------------------------
|
// --- cMenuTimers -----------------------------------------------------------
|
||||||
|
|
||||||
class cMenuTimers : public cOsdMenu {
|
class cMenuTimers : public cOsdMenu {
|
||||||
@ -1215,7 +1229,7 @@ cMenuEvent::cMenuEvent(const cEvent *Event, bool CanSwitch, bool Buttons)
|
|||||||
cChannel *channel = Channels.GetByChannelID(event->ChannelID(), true);
|
cChannel *channel = Channels.GetByChannelID(event->ChannelID(), true);
|
||||||
if (channel) {
|
if (channel) {
|
||||||
SetTitle(channel->Name());
|
SetTitle(channel->Name());
|
||||||
int TimerMatch = tmNone;
|
eTimerMatch TimerMatch = tmNone;
|
||||||
Timers.GetMatch(event, &TimerMatch);
|
Timers.GetMatch(event, &TimerMatch);
|
||||||
if (Buttons)
|
if (Buttons)
|
||||||
SetHelp(TimerMatch == tmFull ? tr("Button$Timer") : tr("Button$Record"), NULL, NULL, CanSwitch ? tr("Button$Switch") : NULL);
|
SetHelp(TimerMatch == tmFull ? tr("Button$Timer") : tr("Button$Record"), NULL, NULL, CanSwitch ? tr("Button$Switch") : NULL);
|
||||||
@ -1273,13 +1287,14 @@ public:
|
|||||||
const cEvent *event;
|
const cEvent *event;
|
||||||
const cChannel *channel;
|
const cChannel *channel;
|
||||||
bool withDate;
|
bool withDate;
|
||||||
int timerMatch;
|
eTimerMatch timerMatch;
|
||||||
cMenuScheduleItem(const cEvent *Event, cChannel *Channel = NULL, bool WithDate = false);
|
cMenuScheduleItem(const cEvent *Event, cChannel *Channel = NULL, bool WithDate = false);
|
||||||
static void SetSortMode(eScheduleSortMode SortMode) { sortMode = SortMode; }
|
static void SetSortMode(eScheduleSortMode SortMode) { sortMode = SortMode; }
|
||||||
static void IncSortMode(void) { sortMode = eScheduleSortMode((sortMode == ssmAllAll) ? ssmAllThis : sortMode + 1); }
|
static void IncSortMode(void) { sortMode = eScheduleSortMode((sortMode == ssmAllAll) ? ssmAllThis : sortMode + 1); }
|
||||||
static eScheduleSortMode SortMode(void) { return sortMode; }
|
static eScheduleSortMode SortMode(void) { return sortMode; }
|
||||||
virtual int Compare(const cListObject &ListObject) const;
|
virtual int Compare(const cListObject &ListObject) const;
|
||||||
bool Update(bool Force = false);
|
bool Update(bool Force = false);
|
||||||
|
virtual void SetMenuItem(cSkinDisplayMenu *DisplayMenu, int Index, bool Current, bool Selectable);
|
||||||
};
|
};
|
||||||
|
|
||||||
cMenuScheduleItem::eScheduleSortMode cMenuScheduleItem::sortMode = ssmAllThis;
|
cMenuScheduleItem::eScheduleSortMode cMenuScheduleItem::sortMode = ssmAllThis;
|
||||||
@ -1309,7 +1324,7 @@ static const char *TimerMatchChars = " tT";
|
|||||||
bool cMenuScheduleItem::Update(bool Force)
|
bool cMenuScheduleItem::Update(bool Force)
|
||||||
{
|
{
|
||||||
bool result = false;
|
bool result = false;
|
||||||
int OldTimerMatch = timerMatch;
|
eTimerMatch OldTimerMatch = timerMatch;
|
||||||
Timers.GetMatch(event, &timerMatch);
|
Timers.GetMatch(event, &timerMatch);
|
||||||
if (Force || timerMatch != OldTimerMatch) {
|
if (Force || timerMatch != OldTimerMatch) {
|
||||||
cString buffer;
|
cString buffer;
|
||||||
@ -1330,6 +1345,12 @@ bool cMenuScheduleItem::Update(bool Force)
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void cMenuScheduleItem::SetMenuItem(cSkinDisplayMenu *DisplayMenu, int Index, bool Current, bool Selectable)
|
||||||
|
{
|
||||||
|
if (!DisplayMenu->SetItemEvent(event, Index, Current, Selectable, channel, withDate, timerMatch))
|
||||||
|
DisplayMenu->SetItem(Text(), Index, Current, Selectable);
|
||||||
|
}
|
||||||
|
|
||||||
// --- cMenuWhatsOn ----------------------------------------------------------
|
// --- cMenuWhatsOn ----------------------------------------------------------
|
||||||
|
|
||||||
class cMenuWhatsOn : public cOsdMenu {
|
class cMenuWhatsOn : public cOsdMenu {
|
||||||
@ -1430,7 +1451,7 @@ eOSState cMenuWhatsOn::Record(void)
|
|||||||
cMenuScheduleItem *item = (cMenuScheduleItem *)Get(Current());
|
cMenuScheduleItem *item = (cMenuScheduleItem *)Get(Current());
|
||||||
if (item) {
|
if (item) {
|
||||||
if (item->timerMatch == tmFull) {
|
if (item->timerMatch == tmFull) {
|
||||||
int tm = tmNone;
|
eTimerMatch tm = tmNone;
|
||||||
cTimer *timer = Timers.GetMatch(item->event, &tm);
|
cTimer *timer = Timers.GetMatch(item->event, &tm);
|
||||||
if (timer)
|
if (timer)
|
||||||
return AddSubMenu(new cMenuEditTimer(timer));
|
return AddSubMenu(new cMenuEditTimer(timer));
|
||||||
@ -1676,7 +1697,7 @@ eOSState cMenuSchedule::Record(void)
|
|||||||
cMenuScheduleItem *item = (cMenuScheduleItem *)Get(Current());
|
cMenuScheduleItem *item = (cMenuScheduleItem *)Get(Current());
|
||||||
if (item) {
|
if (item) {
|
||||||
if (item->timerMatch == tmFull) {
|
if (item->timerMatch == tmFull) {
|
||||||
int tm = tmNone;
|
eTimerMatch tm = tmNone;
|
||||||
cTimer *timer = Timers.GetMatch(item->event, &tm);
|
cTimer *timer = Timers.GetMatch(item->event, &tm);
|
||||||
if (timer)
|
if (timer)
|
||||||
return AddSubMenu(new cMenuEditTimer(timer));
|
return AddSubMenu(new cMenuEditTimer(timer));
|
||||||
@ -2153,7 +2174,8 @@ eOSState cMenuRecording::ProcessKey(eKeys Key)
|
|||||||
|
|
||||||
class cMenuRecordingItem : public cOsdItem {
|
class cMenuRecordingItem : public cOsdItem {
|
||||||
private:
|
private:
|
||||||
char *fileName;
|
cRecording *recording;
|
||||||
|
int level;
|
||||||
char *name;
|
char *name;
|
||||||
int totalEntries, newEntries;
|
int totalEntries, newEntries;
|
||||||
public:
|
public:
|
||||||
@ -2161,13 +2183,15 @@ public:
|
|||||||
~cMenuRecordingItem();
|
~cMenuRecordingItem();
|
||||||
void IncrementCounter(bool New);
|
void IncrementCounter(bool New);
|
||||||
const char *Name(void) { return name; }
|
const char *Name(void) { return name; }
|
||||||
const char *FileName(void) { return fileName; }
|
cRecording *Recording(void) { return recording; }
|
||||||
bool IsDirectory(void) { return name != NULL; }
|
bool IsDirectory(void) { return name != NULL; }
|
||||||
|
virtual void SetMenuItem(cSkinDisplayMenu *DisplayMenu, int Index, bool Current, bool Selectable);
|
||||||
};
|
};
|
||||||
|
|
||||||
cMenuRecordingItem::cMenuRecordingItem(cRecording *Recording, int Level)
|
cMenuRecordingItem::cMenuRecordingItem(cRecording *Recording, int Level)
|
||||||
{
|
{
|
||||||
fileName = strdup(Recording->FileName());
|
recording = Recording;
|
||||||
|
level = Level;
|
||||||
name = NULL;
|
name = NULL;
|
||||||
totalEntries = newEntries = 0;
|
totalEntries = newEntries = 0;
|
||||||
SetText(Recording->Title('\t', true, Level));
|
SetText(Recording->Title('\t', true, Level));
|
||||||
@ -2177,7 +2201,6 @@ cMenuRecordingItem::cMenuRecordingItem(cRecording *Recording, int Level)
|
|||||||
|
|
||||||
cMenuRecordingItem::~cMenuRecordingItem()
|
cMenuRecordingItem::~cMenuRecordingItem()
|
||||||
{
|
{
|
||||||
free(fileName);
|
|
||||||
free(name);
|
free(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2189,6 +2212,12 @@ void cMenuRecordingItem::IncrementCounter(bool New)
|
|||||||
SetText(cString::sprintf("%d\t\t%d\t%s", totalEntries, newEntries, name));
|
SetText(cString::sprintf("%d\t\t%d\t%s", totalEntries, newEntries, name));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void cMenuRecordingItem::SetMenuItem(cSkinDisplayMenu *DisplayMenu, int Index, bool Current, bool Selectable)
|
||||||
|
{
|
||||||
|
if (!DisplayMenu->SetItemRecording(recording, Index, Current, Selectable, level, totalEntries, newEntries))
|
||||||
|
DisplayMenu->SetItem(Text(), Index, Current, Selectable);
|
||||||
|
}
|
||||||
|
|
||||||
// --- cMenuRecordings -------------------------------------------------------
|
// --- cMenuRecordings -------------------------------------------------------
|
||||||
|
|
||||||
cMenuRecordings::cMenuRecordings(const char *Base, int Level, bool OpenSubMenus)
|
cMenuRecordings::cMenuRecordings(const char *Base, int Level, bool OpenSubMenus)
|
||||||
@ -2224,8 +2253,7 @@ void cMenuRecordings::SetHelpKeys(void)
|
|||||||
NewHelpKeys = 1;
|
NewHelpKeys = 1;
|
||||||
else {
|
else {
|
||||||
NewHelpKeys = 2;
|
NewHelpKeys = 2;
|
||||||
cRecording *recording = GetRecording(ri);
|
if (ri->Recording()->Info()->Title())
|
||||||
if (recording && recording->Info()->Title())
|
|
||||||
NewHelpKeys = 3;
|
NewHelpKeys = 3;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2248,12 +2276,8 @@ void cMenuRecordings::Set(bool Refresh)
|
|||||||
char *LastItemText = NULL;
|
char *LastItemText = NULL;
|
||||||
cThreadLock RecordingsLock(&Recordings);
|
cThreadLock RecordingsLock(&Recordings);
|
||||||
if (Refresh) {
|
if (Refresh) {
|
||||||
cMenuRecordingItem *ri = (cMenuRecordingItem *)Get(Current());
|
if (cMenuRecordingItem *ri = (cMenuRecordingItem *)Get(Current()))
|
||||||
if (ri) {
|
CurrentRecording = ri->Recording()->FileName();
|
||||||
cRecording *Recording = Recordings.GetByName(ri->FileName());
|
|
||||||
if (Recording)
|
|
||||||
CurrentRecording = Recording->FileName();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Clear();
|
Clear();
|
||||||
GetRecordingsSortMode(DirectoryName());
|
GetRecordingsSortMode(DirectoryName());
|
||||||
@ -2293,14 +2317,6 @@ cString cMenuRecordings::DirectoryName(void)
|
|||||||
return d;
|
return d;
|
||||||
}
|
}
|
||||||
|
|
||||||
cRecording *cMenuRecordings::GetRecording(cMenuRecordingItem *Item)
|
|
||||||
{
|
|
||||||
cRecording *recording = Recordings.GetByName(Item->FileName());
|
|
||||||
if (!recording)
|
|
||||||
Skins.Message(mtError, tr("Error while accessing recording!"));
|
|
||||||
return recording;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool cMenuRecordings::Open(bool OpenSubMenus)
|
bool cMenuRecordings::Open(bool OpenSubMenus)
|
||||||
{
|
{
|
||||||
cMenuRecordingItem *ri = (cMenuRecordingItem *)Get(Current());
|
cMenuRecordingItem *ri = (cMenuRecordingItem *)Get(Current());
|
||||||
@ -2324,11 +2340,8 @@ eOSState cMenuRecordings::Play(void)
|
|||||||
if (ri->IsDirectory())
|
if (ri->IsDirectory())
|
||||||
Open();
|
Open();
|
||||||
else {
|
else {
|
||||||
cRecording *recording = GetRecording(ri);
|
cReplayControl::SetRecording(ri->Recording()->FileName());
|
||||||
if (recording) {
|
return osReplay;
|
||||||
cReplayControl::SetRecording(recording->FileName());
|
|
||||||
return osReplay;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return osContinue;
|
return osContinue;
|
||||||
@ -2340,13 +2353,10 @@ eOSState cMenuRecordings::Rewind(void)
|
|||||||
return osContinue;
|
return osContinue;
|
||||||
cMenuRecordingItem *ri = (cMenuRecordingItem *)Get(Current());
|
cMenuRecordingItem *ri = (cMenuRecordingItem *)Get(Current());
|
||||||
if (ri && !ri->IsDirectory()) {
|
if (ri && !ri->IsDirectory()) {
|
||||||
cRecording *recording = GetRecording(ri);
|
cDevice::PrimaryDevice()->StopReplay(); // must do this first to be able to rewind the currently replayed recording
|
||||||
if (recording) {
|
cResumeFile ResumeFile(ri->Recording()->FileName(), ri->Recording()->IsPesRecording());
|
||||||
cDevice::PrimaryDevice()->StopReplay(); // must do this first to be able to rewind the currently replayed recording
|
ResumeFile.Delete();
|
||||||
cResumeFile ResumeFile(ri->FileName(), recording->IsPesRecording());
|
return Play();
|
||||||
ResumeFile.Delete();
|
|
||||||
return Play();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return osContinue;
|
return osContinue;
|
||||||
}
|
}
|
||||||
@ -2358,7 +2368,7 @@ eOSState cMenuRecordings::Delete(void)
|
|||||||
cMenuRecordingItem *ri = (cMenuRecordingItem *)Get(Current());
|
cMenuRecordingItem *ri = (cMenuRecordingItem *)Get(Current());
|
||||||
if (ri && !ri->IsDirectory()) {
|
if (ri && !ri->IsDirectory()) {
|
||||||
if (Interface->Confirm(tr("Delete recording?"))) {
|
if (Interface->Confirm(tr("Delete recording?"))) {
|
||||||
cRecordControl *rc = cRecordControls::GetRecordControl(ri->FileName());
|
cRecordControl *rc = cRecordControls::GetRecordControl(ri->Recording()->FileName());
|
||||||
if (rc) {
|
if (rc) {
|
||||||
if (Interface->Confirm(tr("Timer still recording - really delete?"))) {
|
if (Interface->Confirm(tr("Timer still recording - really delete?"))) {
|
||||||
cTimer *timer = rc->Timer();
|
cTimer *timer = rc->Timer();
|
||||||
@ -2375,33 +2385,32 @@ eOSState cMenuRecordings::Delete(void)
|
|||||||
else
|
else
|
||||||
return osContinue;
|
return osContinue;
|
||||||
}
|
}
|
||||||
cRecording *recording = GetRecording(ri);
|
cRecording *recording = ri->Recording();
|
||||||
if (recording) {
|
cString FileName = recording->FileName();
|
||||||
if (cCutter::Active(ri->FileName())) {
|
if (cCutter::Active(ri->Recording()->FileName())) {
|
||||||
if (Interface->Confirm(tr("Recording is being edited - really delete?"))) {
|
if (Interface->Confirm(tr("Recording is being edited - really delete?"))) {
|
||||||
cCutter::Stop();
|
cCutter::Stop();
|
||||||
recording = Recordings.GetByName(ri->FileName()); // cCutter::Stop() might have deleted it if it was the edited version
|
recording = Recordings.GetByName(FileName); // cCutter::Stop() might have deleted it if it was the edited version
|
||||||
// we continue with the code below even if recording is NULL,
|
// we continue with the code below even if recording is NULL,
|
||||||
// in order to have the menu updated etc.
|
// in order to have the menu updated etc.
|
||||||
}
|
|
||||||
else
|
|
||||||
return osContinue;
|
|
||||||
}
|
|
||||||
if (cReplayControl::NowReplaying() && strcmp(cReplayControl::NowReplaying(), ri->FileName()) == 0)
|
|
||||||
cControl::Shutdown();
|
|
||||||
if (!recording || recording->Delete()) {
|
|
||||||
cReplayControl::ClearLastReplayed(ri->FileName());
|
|
||||||
Recordings.DelByName(ri->FileName());
|
|
||||||
cOsdMenu::Del(Current());
|
|
||||||
SetHelpKeys();
|
|
||||||
cVideoDiskUsage::ForceCheck();
|
|
||||||
Display();
|
|
||||||
if (!Count())
|
|
||||||
return osBack;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
Skins.Message(mtError, tr("Error while deleting recording!"));
|
return osContinue;
|
||||||
}
|
}
|
||||||
|
if (cReplayControl::NowReplaying() && strcmp(cReplayControl::NowReplaying(), FileName) == 0)
|
||||||
|
cControl::Shutdown();
|
||||||
|
if (!recording || recording->Delete()) {
|
||||||
|
cReplayControl::ClearLastReplayed(FileName);
|
||||||
|
Recordings.DelByName(FileName);
|
||||||
|
cOsdMenu::Del(Current());
|
||||||
|
SetHelpKeys();
|
||||||
|
cVideoDiskUsage::ForceCheck();
|
||||||
|
Display();
|
||||||
|
if (!Count())
|
||||||
|
return osBack;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
Skins.Message(mtError, tr("Error while deleting recording!"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return osContinue;
|
return osContinue;
|
||||||
@ -2412,11 +2421,8 @@ eOSState cMenuRecordings::Info(void)
|
|||||||
if (HasSubMenu() || Count() == 0)
|
if (HasSubMenu() || Count() == 0)
|
||||||
return osContinue;
|
return osContinue;
|
||||||
cMenuRecordingItem *ri = (cMenuRecordingItem *)Get(Current());
|
cMenuRecordingItem *ri = (cMenuRecordingItem *)Get(Current());
|
||||||
if (ri && !ri->IsDirectory()) {
|
if (ri && !ri->IsDirectory() && ri->Recording()->Info()->Title())
|
||||||
cRecording *recording = GetRecording(ri);
|
return AddSubMenu(new cMenuRecording(ri->Recording(), true));
|
||||||
if (recording && recording->Info()->Title())
|
|
||||||
return AddSubMenu(new cMenuRecording(recording, true));
|
|
||||||
}
|
|
||||||
return osContinue;
|
return osContinue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2426,14 +2432,11 @@ eOSState cMenuRecordings::Commands(eKeys Key)
|
|||||||
return osContinue;
|
return osContinue;
|
||||||
cMenuRecordingItem *ri = (cMenuRecordingItem *)Get(Current());
|
cMenuRecordingItem *ri = (cMenuRecordingItem *)Get(Current());
|
||||||
if (ri && !ri->IsDirectory()) {
|
if (ri && !ri->IsDirectory()) {
|
||||||
cRecording *recording = GetRecording(ri);
|
cMenuCommands *menu;
|
||||||
if (recording) {
|
eOSState state = AddSubMenu(menu = new cMenuCommands(tr("Recording commands"), &RecordingCommands, cString::sprintf("\"%s\"", *strescape(ri->Recording()->FileName(), "\\\"$"))));
|
||||||
cMenuCommands *menu;
|
if (Key != kNone)
|
||||||
eOSState state = AddSubMenu(menu = new cMenuCommands(tr("Recording commands"), &RecordingCommands, cString::sprintf("\"%s\"", *strescape(recording->FileName(), "\\\"$"))));
|
state = menu->ProcessKey(Key);
|
||||||
if (Key != kNone)
|
return state;
|
||||||
state = menu->ProcessKey(Key);
|
|
||||||
return state;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return osContinue;
|
return osContinue;
|
||||||
}
|
}
|
||||||
@ -2454,6 +2457,7 @@ eOSState cMenuRecordings::ProcessKey(eKeys Key)
|
|||||||
|
|
||||||
if (state == osUnknown) {
|
if (state == osUnknown) {
|
||||||
switch (Key) {
|
switch (Key) {
|
||||||
|
case kPlayPause:
|
||||||
case kPlay:
|
case kPlay:
|
||||||
case kOk: return Play();
|
case kOk: return Play();
|
||||||
case kRed: return (helpKeys > 1 && RecordingCommands.Count()) ? Commands() : Play();
|
case kRed: return (helpKeys > 1 && RecordingCommands.Count()) ? Commands() : Play();
|
||||||
@ -3139,6 +3143,8 @@ cMenuSetupReplay::cMenuSetupReplay(void)
|
|||||||
Add(new cMenuEditBoolItem(tr("Setup.Replay$Multi speed mode"), &data.MultiSpeedMode));
|
Add(new cMenuEditBoolItem(tr("Setup.Replay$Multi speed mode"), &data.MultiSpeedMode));
|
||||||
Add(new cMenuEditBoolItem(tr("Setup.Replay$Show replay mode"), &data.ShowReplayMode));
|
Add(new cMenuEditBoolItem(tr("Setup.Replay$Show replay mode"), &data.ShowReplayMode));
|
||||||
Add(new cMenuEditBoolItem(tr("Setup.Replay$Show remaining time"), &data.ShowRemainingTime));
|
Add(new cMenuEditBoolItem(tr("Setup.Replay$Show remaining time"), &data.ShowRemainingTime));
|
||||||
|
Add(new cMenuEditIntItem( tr("Setup.Replay$Progress display time (s)"), &data.ProgressDisplayTime, 0, 60));
|
||||||
|
Add(new cMenuEditBoolItem(tr("Setup.Replay$Pause replay when setting mark"), &data.PauseOnMarkSet));
|
||||||
Add(new cMenuEditIntItem(tr("Setup.Replay$Resume ID"), &data.ResumeID, 0, 99));
|
Add(new cMenuEditIntItem(tr("Setup.Replay$Resume ID"), &data.ResumeID, 0, 99));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4475,6 +4481,8 @@ cReplayControl::cReplayControl(bool PauseLive)
|
|||||||
cStatus::MsgReplaying(this, Recording.Name(), Recording.FileName(), true);
|
cStatus::MsgReplaying(this, Recording.Name(), Recording.FileName(), true);
|
||||||
marks.Load(fileName, Recording.FramesPerSecond(), Recording.IsPesRecording());
|
marks.Load(fileName, Recording.FramesPerSecond(), Recording.IsPesRecording());
|
||||||
SetTrackDescriptions(false);
|
SetTrackDescriptions(false);
|
||||||
|
if (Setup.ProgressDisplayTime)
|
||||||
|
ShowTimed(Setup.ProgressDisplayTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
cReplayControl::~cReplayControl()
|
cReplayControl::~cReplayControl()
|
||||||
@ -4685,6 +4693,7 @@ void cReplayControl::TimeSearchProcess(eKeys Key)
|
|||||||
timeSearchActive = false;
|
timeSearchActive = false;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case kPlayPause:
|
||||||
case kPlay:
|
case kPlay:
|
||||||
case kUp:
|
case kUp:
|
||||||
case kPause:
|
case kPause:
|
||||||
@ -4739,7 +4748,7 @@ void cReplayControl::MarkToggle(void)
|
|||||||
marks.Add(Current);
|
marks.Add(Current);
|
||||||
bool Play, Forward;
|
bool Play, Forward;
|
||||||
int Speed;
|
int Speed;
|
||||||
if (GetReplayMode(Play, Forward, Speed) && !Play)
|
if (Setup.PauseOnMarkSet || GetReplayMode(Play, Forward, Speed) && !Play)
|
||||||
Goto(Current, true);
|
Goto(Current, true);
|
||||||
}
|
}
|
||||||
ShowTimed(2);
|
ShowTimed(2);
|
||||||
@ -4749,15 +4758,19 @@ void cReplayControl::MarkToggle(void)
|
|||||||
|
|
||||||
void cReplayControl::MarkJump(bool Forward)
|
void cReplayControl::MarkJump(bool Forward)
|
||||||
{
|
{
|
||||||
if (marks.Count()) {
|
int Current, Total;
|
||||||
int Current, Total;
|
if (GetIndex(Current, Total)) {
|
||||||
if (GetIndex(Current, Total)) {
|
if (marks.Count()) {
|
||||||
cMark *m = Forward ? marks.GetNext(Current) : marks.GetPrev(Current);
|
cMark *m = Forward ? marks.GetNext(Current) : marks.GetPrev(Current);
|
||||||
if (m) {
|
if (m) {
|
||||||
Goto(m->Position(), true);
|
Goto(m->Position(), true);
|
||||||
displayFrames = true;
|
displayFrames = true;
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// There are either no marks at all, or we already were at the first or last one,
|
||||||
|
// so jump to the very beginning or end:
|
||||||
|
Goto(Forward ? Total : 0, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4861,6 +4874,15 @@ eOSState cReplayControl::ProcessKey(eKeys Key)
|
|||||||
TimeSearchProcess(Key);
|
TimeSearchProcess(Key);
|
||||||
return osContinue;
|
return osContinue;
|
||||||
}
|
}
|
||||||
|
if (Key == kPlayPause) {
|
||||||
|
bool Play, Forward;
|
||||||
|
int Speed;
|
||||||
|
GetReplayMode(Play, Forward, Speed);
|
||||||
|
if (Speed >= 0)
|
||||||
|
Key = Play ? kPlay : kPause;
|
||||||
|
else
|
||||||
|
Key = Play ? kPause : kPlay;
|
||||||
|
}
|
||||||
bool DoShowMode = true;
|
bool DoShowMode = true;
|
||||||
switch (int(Key)) {
|
switch (int(Key)) {
|
||||||
// Positioning:
|
// Positioning:
|
||||||
|
3
menu.h
3
menu.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: menu.h 2.12 2012/09/07 08:48:34 kls Exp $
|
* $Id: menu.h 2.13 2012/12/07 13:44:13 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __MENU_H
|
#ifndef __MENU_H
|
||||||
@ -208,7 +208,6 @@ private:
|
|||||||
eOSState Commands(eKeys Key = kNone);
|
eOSState Commands(eKeys Key = kNone);
|
||||||
protected:
|
protected:
|
||||||
cString DirectoryName(void);
|
cString DirectoryName(void);
|
||||||
cRecording *GetRecording(cMenuRecordingItem *Item);
|
|
||||||
public:
|
public:
|
||||||
cMenuRecordings(const char *Base = NULL, int Level = 0, bool OpenSubMenus = false);
|
cMenuRecordings(const char *Base = NULL, int Level = 0, bool OpenSubMenus = false);
|
||||||
~cMenuRecordings();
|
~cMenuRecordings();
|
||||||
|
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.17 2012/06/02 10:32:38 kls Exp $
|
* $Id: osd.h 2.18 2012/12/03 13:49:02 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __OSD_H
|
#ifndef __OSD_H
|
||||||
@ -735,7 +735,7 @@ protected:
|
|||||||
///< Initializes the OSD with the given coordinates.
|
///< Initializes the OSD with the given coordinates.
|
||||||
///< By default it is assumed that the full area will be able to display
|
///< By default it is assumed that the full area will be able to display
|
||||||
///< full 32 bit graphics (ARGB with eight bit for each color and the alpha
|
///< full 32 bit graphics (ARGB with eight bit for each color and the alpha
|
||||||
///< value, repectively). However, the actual hardware in use may not be
|
///< value, respectively). However, the actual hardware in use may not be
|
||||||
///< able to display such a high resolution OSD, so there is an option to
|
///< able to display such a high resolution OSD, so there is an option to
|
||||||
///< divide the full OSD area into several sub-areas with lower color depths
|
///< divide the full OSD area into several sub-areas with lower color depths
|
||||||
///< and individual palettes. The sub-areas need not necessarily cover the
|
///< and individual palettes. The sub-areas need not necessarily cover the
|
||||||
|
13
osdbase.c
13
osdbase.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: osdbase.c 2.6 2012/04/23 09:41:22 kls Exp $
|
* $Id: osdbase.c 2.7 2012/12/07 09:50:47 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "osdbase.h"
|
#include "osdbase.h"
|
||||||
@ -55,6 +55,11 @@ void cOsdItem::SetFresh(bool Fresh)
|
|||||||
fresh = Fresh;
|
fresh = Fresh;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void cOsdItem::SetMenuItem(cSkinDisplayMenu *DisplayMenu, int Index, bool Current, bool Selectable)
|
||||||
|
{
|
||||||
|
DisplayMenu->SetItem(Text(), Index, Current, Selectable);
|
||||||
|
}
|
||||||
|
|
||||||
eOSState cOsdItem::ProcessKey(eKeys Key)
|
eOSState cOsdItem::ProcessKey(eKeys Key)
|
||||||
{
|
{
|
||||||
return Key == kOk ? state : osUnknown;
|
return Key == kOk ? state : osUnknown;
|
||||||
@ -246,7 +251,7 @@ void cOsdMenu::Display(void)
|
|||||||
int n = 0;
|
int n = 0;
|
||||||
for (cOsdItem *item = Get(first); item; item = Next(item)) {
|
for (cOsdItem *item = Get(first); item; item = Next(item)) {
|
||||||
bool CurrentSelectable = (i == current) && item->Selectable();
|
bool CurrentSelectable = (i == current) && item->Selectable();
|
||||||
displayMenu->SetItem(item->Text(), i - first, CurrentSelectable, item->Selectable());
|
item->SetMenuItem(displayMenu, i - first, CurrentSelectable, item->Selectable());
|
||||||
if (CurrentSelectable)
|
if (CurrentSelectable)
|
||||||
cStatus::MsgOsdCurrentItem(item->Text());
|
cStatus::MsgOsdCurrentItem(item->Text());
|
||||||
if (++n == displayMenuItems)
|
if (++n == displayMenuItems)
|
||||||
@ -275,7 +280,7 @@ void cOsdMenu::DisplayCurrent(bool Current)
|
|||||||
{
|
{
|
||||||
cOsdItem *item = Get(current);
|
cOsdItem *item = Get(current);
|
||||||
if (item) {
|
if (item) {
|
||||||
displayMenu->SetItem(item->Text(), current - first, Current && item->Selectable(), item->Selectable());
|
item->SetMenuItem(displayMenu, current - first, Current && item->Selectable(), item->Selectable());
|
||||||
if (Current && item->Selectable())
|
if (Current && item->Selectable())
|
||||||
cStatus::MsgOsdCurrentItem(item->Text());
|
cStatus::MsgOsdCurrentItem(item->Text());
|
||||||
if (!Current)
|
if (!Current)
|
||||||
@ -296,7 +301,7 @@ void cOsdMenu::DisplayItem(cOsdItem *Item)
|
|||||||
int Offset = Index - first;
|
int Offset = Index - first;
|
||||||
if (Offset >= 0 && Offset < first + displayMenuItems) {
|
if (Offset >= 0 && Offset < first + displayMenuItems) {
|
||||||
bool Current = Index == current;
|
bool Current = Index == current;
|
||||||
displayMenu->SetItem(Item->Text(), Offset, Current && Item->Selectable(), Item->Selectable());
|
Item->SetMenuItem(displayMenu, Offset, Current && Item->Selectable(), Item->Selectable());
|
||||||
if (Current && Item->Selectable())
|
if (Current && Item->Selectable())
|
||||||
cStatus::MsgOsdCurrentItem(Item->Text());
|
cStatus::MsgOsdCurrentItem(Item->Text());
|
||||||
}
|
}
|
||||||
|
@ -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.h 2.4 2012/04/23 09:40:07 kls Exp $
|
* $Id: osdbase.h 2.5 2012/12/07 09:49:35 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __OSDBASE_H
|
#ifndef __OSDBASE_H
|
||||||
@ -63,6 +63,7 @@ public:
|
|||||||
void SetFresh(bool Fresh);
|
void SetFresh(bool Fresh);
|
||||||
const char *Text(void) const { return text; }
|
const char *Text(void) const { return text; }
|
||||||
virtual void Set(void) {}
|
virtual void Set(void) {}
|
||||||
|
virtual void SetMenuItem(cSkinDisplayMenu *DisplayMenu, int Index, bool Current, bool Selectable);
|
||||||
virtual eOSState ProcessKey(eKeys Key);
|
virtual eOSState ProcessKey(eKeys Key);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
4
pat.c
4
pat.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: pat.c 2.18 2012/04/15 09:54:53 kls Exp $
|
* $Id: pat.c 2.19 2012/11/25 14:12:21 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "pat.h"
|
#include "pat.h"
|
||||||
@ -352,7 +352,7 @@ void cPatFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
|
|||||||
switch (stream.getStreamType()) {
|
switch (stream.getStreamType()) {
|
||||||
case 1: // STREAMTYPE_11172_VIDEO
|
case 1: // STREAMTYPE_11172_VIDEO
|
||||||
case 2: // STREAMTYPE_13818_VIDEO
|
case 2: // STREAMTYPE_13818_VIDEO
|
||||||
case 0x1B: // MPEG4
|
case 0x1B: // H.264
|
||||||
Vpid = esPid;
|
Vpid = esPid;
|
||||||
Ppid = pmt.getPCRPid();
|
Ppid = pmt.getPCRPid();
|
||||||
Vtype = stream.getStreamType();
|
Vtype = stream.getStreamType();
|
||||||
|
17
po/ar.po
17
po/ar.po
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.7.0\n"
|
"Project-Id-Version: VDR 1.7.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-11-18 14:31+0100\n"
|
"POT-Creation-Date: 2012-12-07 14:59+0100\n"
|
||||||
"PO-Revision-Date: 2008-10-16 11:16-0400\n"
|
"PO-Revision-Date: 2008-10-16 11:16-0400\n"
|
||||||
"Last-Translator: Osama Alrawab <alrawab@hotmail.com>\n"
|
"Last-Translator: Osama Alrawab <alrawab@hotmail.com>\n"
|
||||||
"Language-Team: Arabic <ar@li.org>\n"
|
"Language-Team: Arabic <ar@li.org>\n"
|
||||||
@ -417,6 +417,9 @@ msgstr "ازرق"
|
|||||||
msgid "Key$Info"
|
msgid "Key$Info"
|
||||||
msgstr "معلومات"
|
msgstr "معلومات"
|
||||||
|
|
||||||
|
msgid "Key$Play/Pause"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Key$Play"
|
msgid "Key$Play"
|
||||||
msgstr "عرض"
|
msgstr "عرض"
|
||||||
|
|
||||||
@ -750,9 +753,6 @@ msgstr "افتح"
|
|||||||
msgid "Commands"
|
msgid "Commands"
|
||||||
msgstr "الاوامر"
|
msgstr "الاوامر"
|
||||||
|
|
||||||
msgid "Error while accessing recording!"
|
|
||||||
msgstr "حدث خطاء عند محاولة الوصول لتسجيلات"
|
|
||||||
|
|
||||||
msgid "Delete recording?"
|
msgid "Delete recording?"
|
||||||
msgstr "حذف التسجيل"
|
msgstr "حذف التسجيل"
|
||||||
|
|
||||||
@ -1127,6 +1127,12 @@ msgstr "اضهر طور الاعادة"
|
|||||||
msgid "Setup.Replay$Show remaining time"
|
msgid "Setup.Replay$Show remaining time"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.Replay$Progress display time (s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.Replay$Pause replay when setting mark"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.Replay$Resume ID"
|
msgid "Setup.Replay$Resume ID"
|
||||||
msgstr "رقم المواصلة"
|
msgstr "رقم المواصلة"
|
||||||
|
|
||||||
@ -1412,3 +1418,6 @@ msgstr "القرص الصلب"
|
|||||||
|
|
||||||
msgid "free"
|
msgid "free"
|
||||||
msgstr "مساحة حرة"
|
msgstr "مساحة حرة"
|
||||||
|
|
||||||
|
#~ msgid "Error while accessing recording!"
|
||||||
|
#~ msgstr "حدث خطاء عند محاولة الوصول لتسجيلات"
|
||||||
|
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@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-11-18 14:31+0100\n"
|
"POT-Creation-Date: 2012-12-07 14:59+0100\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: Catalan <vdr@linuxtv.org>\n"
|
"Language-Team: Catalan <vdr@linuxtv.org>\n"
|
||||||
@ -413,6 +413,9 @@ msgstr "Blau"
|
|||||||
msgid "Key$Info"
|
msgid "Key$Info"
|
||||||
msgstr "Informació"
|
msgstr "Informació"
|
||||||
|
|
||||||
|
msgid "Key$Play/Pause"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Key$Play"
|
msgid "Key$Play"
|
||||||
msgstr "Reproduir"
|
msgstr "Reproduir"
|
||||||
|
|
||||||
@ -741,9 +744,6 @@ msgstr "Obrir"
|
|||||||
msgid "Commands"
|
msgid "Commands"
|
||||||
msgstr "Ordres"
|
msgstr "Ordres"
|
||||||
|
|
||||||
msgid "Error while accessing recording!"
|
|
||||||
msgstr "Error a l'accedir a la gravació!"
|
|
||||||
|
|
||||||
msgid "Delete recording?"
|
msgid "Delete recording?"
|
||||||
msgstr "Esborrar gravació?"
|
msgstr "Esborrar gravació?"
|
||||||
|
|
||||||
@ -1104,6 +1104,12 @@ msgstr "Mostrar mode de reproducci
|
|||||||
msgid "Setup.Replay$Show remaining time"
|
msgid "Setup.Replay$Show remaining time"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.Replay$Progress display time (s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.Replay$Pause replay when setting mark"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.Replay$Resume ID"
|
msgid "Setup.Replay$Resume ID"
|
||||||
msgstr "ID de Continuar"
|
msgstr "ID de Continuar"
|
||||||
|
|
||||||
@ -1386,3 +1392,6 @@ msgstr "Disc"
|
|||||||
|
|
||||||
msgid "free"
|
msgid "free"
|
||||||
msgstr "lliure"
|
msgstr "lliure"
|
||||||
|
|
||||||
|
#~ msgid "Error while accessing recording!"
|
||||||
|
#~ msgstr "Error a l'accedir a la gravació!"
|
||||||
|
17
po/cs_CZ.po
17
po/cs_CZ.po
@ -9,7 +9,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.7.14\n"
|
"Project-Id-Version: VDR 1.7.14\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-11-18 14:31+0100\n"
|
"POT-Creation-Date: 2012-12-07 14:59+0100\n"
|
||||||
"PO-Revision-Date: 2010-05-06 11:00+0200\n"
|
"PO-Revision-Date: 2010-05-06 11:00+0200\n"
|
||||||
"Last-Translator: Radek Šťastný <dedkus@gmail.com>\n"
|
"Last-Translator: Radek Šťastný <dedkus@gmail.com>\n"
|
||||||
"Language-Team: Czech <vdr@linuxtv.org>\n"
|
"Language-Team: Czech <vdr@linuxtv.org>\n"
|
||||||
@ -412,6 +412,9 @@ msgstr "Modrý"
|
|||||||
msgid "Key$Info"
|
msgid "Key$Info"
|
||||||
msgstr "Info"
|
msgstr "Info"
|
||||||
|
|
||||||
|
msgid "Key$Play/Pause"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Key$Play"
|
msgid "Key$Play"
|
||||||
msgstr "Přehrát"
|
msgstr "Přehrát"
|
||||||
|
|
||||||
@ -740,9 +743,6 @@ msgstr "Otevřít"
|
|||||||
msgid "Commands"
|
msgid "Commands"
|
||||||
msgstr "Příkazy"
|
msgstr "Příkazy"
|
||||||
|
|
||||||
msgid "Error while accessing recording!"
|
|
||||||
msgstr "Chyba při přístupu k nahrávkám!"
|
|
||||||
|
|
||||||
msgid "Delete recording?"
|
msgid "Delete recording?"
|
||||||
msgstr "Smazat nahrávku?"
|
msgstr "Smazat nahrávku?"
|
||||||
|
|
||||||
@ -1103,6 +1103,12 @@ msgstr "Zobrazit režim přehrávání"
|
|||||||
msgid "Setup.Replay$Show remaining time"
|
msgid "Setup.Replay$Show remaining time"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.Replay$Progress display time (s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.Replay$Pause replay when setting mark"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.Replay$Resume ID"
|
msgid "Setup.Replay$Resume ID"
|
||||||
msgstr "ID obnovení"
|
msgstr "ID obnovení"
|
||||||
|
|
||||||
@ -1385,3 +1391,6 @@ msgstr "Disk"
|
|||||||
|
|
||||||
msgid "free"
|
msgid "free"
|
||||||
msgstr "volno"
|
msgstr "volno"
|
||||||
|
|
||||||
|
#~ msgid "Error while accessing recording!"
|
||||||
|
#~ msgstr "Chyba při přístupu k nahrávkám!"
|
||||||
|
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@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-11-18 14:31+0100\n"
|
"POT-Creation-Date: 2012-12-07 14:59+0100\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 <vdr@linuxtv.org>\n"
|
"Language-Team: Danish <vdr@linuxtv.org>\n"
|
||||||
@ -410,6 +410,9 @@ msgstr "Bl
|
|||||||
msgid "Key$Info"
|
msgid "Key$Info"
|
||||||
msgstr "Info"
|
msgstr "Info"
|
||||||
|
|
||||||
|
msgid "Key$Play/Pause"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Key$Play"
|
msgid "Key$Play"
|
||||||
msgstr "Afspil"
|
msgstr "Afspil"
|
||||||
|
|
||||||
@ -738,9 +741,6 @@ msgstr "
|
|||||||
msgid "Commands"
|
msgid "Commands"
|
||||||
msgstr "Kommandoer"
|
msgstr "Kommandoer"
|
||||||
|
|
||||||
msgid "Error while accessing recording!"
|
|
||||||
msgstr "Fejl ved læsning af optagelse!"
|
|
||||||
|
|
||||||
msgid "Delete recording?"
|
msgid "Delete recording?"
|
||||||
msgstr "Slet optagelse?"
|
msgstr "Slet optagelse?"
|
||||||
|
|
||||||
@ -1101,6 +1101,12 @@ msgstr "Vis afspilningsmodus"
|
|||||||
msgid "Setup.Replay$Show remaining time"
|
msgid "Setup.Replay$Show remaining time"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.Replay$Progress display time (s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.Replay$Pause replay when setting mark"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.Replay$Resume ID"
|
msgid "Setup.Replay$Resume ID"
|
||||||
msgstr "Genoptagelses ID"
|
msgstr "Genoptagelses ID"
|
||||||
|
|
||||||
@ -1383,3 +1389,6 @@ msgstr "Disk"
|
|||||||
|
|
||||||
msgid "free"
|
msgid "free"
|
||||||
msgstr "fri"
|
msgstr "fri"
|
||||||
|
|
||||||
|
#~ msgid "Error while accessing recording!"
|
||||||
|
#~ msgstr "Fejl ved læsning af optagelse!"
|
||||||
|
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@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-11-18 14:31+0100\n"
|
"POT-Creation-Date: 2012-12-07 14:59+0100\n"
|
||||||
"PO-Revision-Date: 2010-01-16 16:46+0100\n"
|
"PO-Revision-Date: 2010-01-16 16:46+0100\n"
|
||||||
"Last-Translator: Klaus Schmidinger <kls@tvdr.de>\n"
|
"Last-Translator: Klaus Schmidinger <kls@tvdr.de>\n"
|
||||||
"Language-Team: German <vdr@linuxtv.org>\n"
|
"Language-Team: German <vdr@linuxtv.org>\n"
|
||||||
@ -410,6 +410,9 @@ msgstr "Blau"
|
|||||||
msgid "Key$Info"
|
msgid "Key$Info"
|
||||||
msgstr "Info"
|
msgstr "Info"
|
||||||
|
|
||||||
|
msgid "Key$Play/Pause"
|
||||||
|
msgstr "Wiedergabe/Pause"
|
||||||
|
|
||||||
msgid "Key$Play"
|
msgid "Key$Play"
|
||||||
msgstr "Wiedergabe"
|
msgstr "Wiedergabe"
|
||||||
|
|
||||||
@ -738,9 +741,6 @@ msgstr "
|
|||||||
msgid "Commands"
|
msgid "Commands"
|
||||||
msgstr "Befehle"
|
msgstr "Befehle"
|
||||||
|
|
||||||
msgid "Error while accessing recording!"
|
|
||||||
msgstr "Fehler beim Ansprechen der Aufzeichnung!"
|
|
||||||
|
|
||||||
msgid "Delete recording?"
|
msgid "Delete recording?"
|
||||||
msgstr "Aufzeichnung löschen?"
|
msgstr "Aufzeichnung löschen?"
|
||||||
|
|
||||||
@ -1101,6 +1101,12 @@ msgstr "Wiedergabestatus anzeigen"
|
|||||||
msgid "Setup.Replay$Show remaining time"
|
msgid "Setup.Replay$Show remaining time"
|
||||||
msgstr "Verbleibende Zeit anzeigen"
|
msgstr "Verbleibende Zeit anzeigen"
|
||||||
|
|
||||||
|
msgid "Setup.Replay$Progress display time (s)"
|
||||||
|
msgstr "Anzeigedauer für Fortschrittsanzeige (s)"
|
||||||
|
|
||||||
|
msgid "Setup.Replay$Pause replay when setting mark"
|
||||||
|
msgstr "Pause beim Setzen einer Schnittmarke"
|
||||||
|
|
||||||
msgid "Setup.Replay$Resume ID"
|
msgid "Setup.Replay$Resume ID"
|
||||||
msgstr "Wiedergabe-ID"
|
msgstr "Wiedergabe-ID"
|
||||||
|
|
||||||
@ -1383,3 +1389,6 @@ msgstr "Disk"
|
|||||||
|
|
||||||
msgid "free"
|
msgid "free"
|
||||||
msgstr "frei"
|
msgstr "frei"
|
||||||
|
|
||||||
|
#~ msgid "Error while accessing recording!"
|
||||||
|
#~ msgstr "Fehler beim Ansprechen der Aufzeichnung!"
|
||||||
|
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@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-11-18 14:31+0100\n"
|
"POT-Creation-Date: 2012-12-07 14:59+0100\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 <vdr@linuxtv.org>\n"
|
"Language-Team: Greek <vdr@linuxtv.org>\n"
|
||||||
@ -410,6 +410,9 @@ msgstr "
|
|||||||
msgid "Key$Info"
|
msgid "Key$Info"
|
||||||
msgstr "Ðëçñïöïñßåò"
|
msgstr "Ðëçñïöïñßåò"
|
||||||
|
|
||||||
|
msgid "Key$Play/Pause"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Key$Play"
|
msgid "Key$Play"
|
||||||
msgstr "ÁíáðáñáãùãÞ"
|
msgstr "ÁíáðáñáãùãÞ"
|
||||||
|
|
||||||
@ -738,9 +741,6 @@ msgstr "
|
|||||||
msgid "Commands"
|
msgid "Commands"
|
||||||
msgstr "ÅíôïëÝò"
|
msgstr "ÅíôïëÝò"
|
||||||
|
|
||||||
msgid "Error while accessing recording!"
|
|
||||||
msgstr "Ðñüâëçìá óôÞí ðñïóðÝëáóç åããñáöÞò!"
|
|
||||||
|
|
||||||
msgid "Delete recording?"
|
msgid "Delete recording?"
|
||||||
msgstr "ÄéáãñáöÞ åããñáöÞò?"
|
msgstr "ÄéáãñáöÞ åããñáöÞò?"
|
||||||
|
|
||||||
@ -1101,6 +1101,12 @@ msgstr "
|
|||||||
msgid "Setup.Replay$Show remaining time"
|
msgid "Setup.Replay$Show remaining time"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.Replay$Progress display time (s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.Replay$Pause replay when setting mark"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.Replay$Resume ID"
|
msgid "Setup.Replay$Resume ID"
|
||||||
msgstr "ID áíáìåôÜäïóçò"
|
msgstr "ID áíáìåôÜäïóçò"
|
||||||
|
|
||||||
@ -1383,3 +1389,6 @@ msgstr "
|
|||||||
|
|
||||||
msgid "free"
|
msgid "free"
|
||||||
msgstr "Åëåýèåñïò"
|
msgstr "Åëåýèåñïò"
|
||||||
|
|
||||||
|
#~ msgid "Error while accessing recording!"
|
||||||
|
#~ 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@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-11-18 14:31+0100\n"
|
"POT-Creation-Date: 2012-12-07 14:59+0100\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 <vdr@linuxtv.org>\n"
|
"Language-Team: Spanish <vdr@linuxtv.org>\n"
|
||||||
@ -411,6 +411,9 @@ msgstr "Azul"
|
|||||||
msgid "Key$Info"
|
msgid "Key$Info"
|
||||||
msgstr "Info"
|
msgstr "Info"
|
||||||
|
|
||||||
|
msgid "Key$Play/Pause"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Key$Play"
|
msgid "Key$Play"
|
||||||
msgstr "Reproducir"
|
msgstr "Reproducir"
|
||||||
|
|
||||||
@ -739,9 +742,6 @@ msgstr "Abrir"
|
|||||||
msgid "Commands"
|
msgid "Commands"
|
||||||
msgstr "Órdenes"
|
msgstr "Órdenes"
|
||||||
|
|
||||||
msgid "Error while accessing recording!"
|
|
||||||
msgstr "¡Error al acceder a la grabación!"
|
|
||||||
|
|
||||||
msgid "Delete recording?"
|
msgid "Delete recording?"
|
||||||
msgstr "¿Eliminar grabacion?"
|
msgstr "¿Eliminar grabacion?"
|
||||||
|
|
||||||
@ -1102,6 +1102,12 @@ msgstr "Mostrar modo de reproducci
|
|||||||
msgid "Setup.Replay$Show remaining time"
|
msgid "Setup.Replay$Show remaining time"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.Replay$Progress display time (s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.Replay$Pause replay when setting mark"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.Replay$Resume ID"
|
msgid "Setup.Replay$Resume ID"
|
||||||
msgstr "ID de continuación"
|
msgstr "ID de continuación"
|
||||||
|
|
||||||
@ -1384,3 +1390,6 @@ msgstr "Disco"
|
|||||||
|
|
||||||
msgid "free"
|
msgid "free"
|
||||||
msgstr "libre"
|
msgstr "libre"
|
||||||
|
|
||||||
|
#~ msgid "Error while accessing recording!"
|
||||||
|
#~ msgstr "¡Error al acceder a la 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@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-11-18 14:31+0100\n"
|
"POT-Creation-Date: 2012-12-07 14:59+0100\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 <artlov@gmail.com>\n"
|
"Last-Translator: Arthur Konovalov <artlov@gmail.com>\n"
|
||||||
"Language-Team: Estonian <vdr@linuxtv.org>\n"
|
"Language-Team: Estonian <vdr@linuxtv.org>\n"
|
||||||
@ -410,6 +410,9 @@ msgstr "Sinine"
|
|||||||
msgid "Key$Info"
|
msgid "Key$Info"
|
||||||
msgstr "Info"
|
msgstr "Info"
|
||||||
|
|
||||||
|
msgid "Key$Play/Pause"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Key$Play"
|
msgid "Key$Play"
|
||||||
msgstr "Start"
|
msgstr "Start"
|
||||||
|
|
||||||
@ -738,9 +741,6 @@ msgstr "Avada"
|
|||||||
msgid "Commands"
|
msgid "Commands"
|
||||||
msgstr "Käsud"
|
msgstr "Käsud"
|
||||||
|
|
||||||
msgid "Error while accessing recording!"
|
|
||||||
msgstr "Salvestuse taasesitus nurjus!"
|
|
||||||
|
|
||||||
msgid "Delete recording?"
|
msgid "Delete recording?"
|
||||||
msgstr "Kustutada salvestus?"
|
msgstr "Kustutada salvestus?"
|
||||||
|
|
||||||
@ -1101,6 +1101,12 @@ msgstr "Korduse režiimi kuvamine"
|
|||||||
msgid "Setup.Replay$Show remaining time"
|
msgid "Setup.Replay$Show remaining time"
|
||||||
msgstr "Järelejäänud aja kuvamine"
|
msgstr "Järelejäänud aja kuvamine"
|
||||||
|
|
||||||
|
msgid "Setup.Replay$Progress display time (s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.Replay$Pause replay when setting mark"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.Replay$Resume ID"
|
msgid "Setup.Replay$Resume ID"
|
||||||
msgstr "Jätkamise ID"
|
msgstr "Jätkamise ID"
|
||||||
|
|
||||||
@ -1383,3 +1389,6 @@ msgstr "Ketas"
|
|||||||
|
|
||||||
msgid "free"
|
msgid "free"
|
||||||
msgstr "vaba"
|
msgstr "vaba"
|
||||||
|
|
||||||
|
#~ msgid "Error while accessing recording!"
|
||||||
|
#~ msgstr "Salvestuse taasesitus nurjus!"
|
||||||
|
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@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-11-18 14:31+0100\n"
|
"POT-Creation-Date: 2012-12-07 14:59+0100\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 <vdr@linuxtv.org>\n"
|
"Language-Team: Finnish <vdr@linuxtv.org>\n"
|
||||||
@ -413,6 +413,9 @@ msgstr "Sininen"
|
|||||||
msgid "Key$Info"
|
msgid "Key$Info"
|
||||||
msgstr "Tiedot"
|
msgstr "Tiedot"
|
||||||
|
|
||||||
|
msgid "Key$Play/Pause"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Key$Play"
|
msgid "Key$Play"
|
||||||
msgstr "Toista"
|
msgstr "Toista"
|
||||||
|
|
||||||
@ -741,9 +744,6 @@ msgstr "Avaa"
|
|||||||
msgid "Commands"
|
msgid "Commands"
|
||||||
msgstr "Komennot"
|
msgstr "Komennot"
|
||||||
|
|
||||||
msgid "Error while accessing recording!"
|
|
||||||
msgstr "Tallenteen toistaminen epäonnistui!"
|
|
||||||
|
|
||||||
msgid "Delete recording?"
|
msgid "Delete recording?"
|
||||||
msgstr "Poistetaanko tallenne?"
|
msgstr "Poistetaanko tallenne?"
|
||||||
|
|
||||||
@ -1104,6 +1104,12 @@ msgstr "Näytä toiston tila"
|
|||||||
msgid "Setup.Replay$Show remaining time"
|
msgid "Setup.Replay$Show remaining time"
|
||||||
msgstr "Näytä jäljellä oleva aika"
|
msgstr "Näytä jäljellä oleva aika"
|
||||||
|
|
||||||
|
msgid "Setup.Replay$Progress display time (s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.Replay$Pause replay when setting mark"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.Replay$Resume ID"
|
msgid "Setup.Replay$Resume ID"
|
||||||
msgstr "Tallenteen paluutunniste"
|
msgstr "Tallenteen paluutunniste"
|
||||||
|
|
||||||
@ -1386,3 +1392,6 @@ msgstr "Levy"
|
|||||||
|
|
||||||
msgid "free"
|
msgid "free"
|
||||||
msgstr "vapaana"
|
msgstr "vapaana"
|
||||||
|
|
||||||
|
#~ msgid "Error while accessing recording!"
|
||||||
|
#~ msgstr "Tallenteen toistaminen epäonnistui!"
|
||||||
|
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@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-11-18 14:31+0100\n"
|
"POT-Creation-Date: 2012-12-07 14:59+0100\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 <vdr@linuxtv.org>\n"
|
"Language-Team: French <vdr@linuxtv.org>\n"
|
||||||
@ -416,6 +416,9 @@ msgstr "Bleu"
|
|||||||
msgid "Key$Info"
|
msgid "Key$Info"
|
||||||
msgstr "Info"
|
msgstr "Info"
|
||||||
|
|
||||||
|
msgid "Key$Play/Pause"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Key$Play"
|
msgid "Key$Play"
|
||||||
msgstr "Lecture"
|
msgstr "Lecture"
|
||||||
|
|
||||||
@ -744,9 +747,6 @@ msgstr "Ouvrir"
|
|||||||
msgid "Commands"
|
msgid "Commands"
|
||||||
msgstr "Commandes"
|
msgstr "Commandes"
|
||||||
|
|
||||||
msgid "Error while accessing recording!"
|
|
||||||
msgstr "Impossible d'accéder à l'enregistrement"
|
|
||||||
|
|
||||||
msgid "Delete recording?"
|
msgid "Delete recording?"
|
||||||
msgstr "Supprimer l'enregistrement ?"
|
msgstr "Supprimer l'enregistrement ?"
|
||||||
|
|
||||||
@ -1107,6 +1107,12 @@ msgstr "Affichage mode de lecture"
|
|||||||
msgid "Setup.Replay$Show remaining time"
|
msgid "Setup.Replay$Show remaining time"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.Replay$Progress display time (s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.Replay$Pause replay when setting mark"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.Replay$Resume ID"
|
msgid "Setup.Replay$Resume ID"
|
||||||
msgstr "ID de reprise"
|
msgstr "ID de reprise"
|
||||||
|
|
||||||
@ -1389,3 +1395,6 @@ msgstr "Disque"
|
|||||||
|
|
||||||
msgid "free"
|
msgid "free"
|
||||||
msgstr "restant"
|
msgstr "restant"
|
||||||
|
|
||||||
|
#~ msgid "Error while accessing recording!"
|
||||||
|
#~ msgstr "Impossible d'accéder à l'enregistrement"
|
||||||
|
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@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-11-18 14:31+0100\n"
|
"POT-Creation-Date: 2012-12-07 14:59+0100\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 <vdr@linuxtv.org>\n"
|
"Language-Team: Croatian <vdr@linuxtv.org>\n"
|
||||||
@ -412,6 +412,9 @@ msgstr "Plavo"
|
|||||||
msgid "Key$Info"
|
msgid "Key$Info"
|
||||||
msgstr "Info"
|
msgstr "Info"
|
||||||
|
|
||||||
|
msgid "Key$Play/Pause"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Key$Play"
|
msgid "Key$Play"
|
||||||
msgstr "Start"
|
msgstr "Start"
|
||||||
|
|
||||||
@ -740,9 +743,6 @@ msgstr "Otvori"
|
|||||||
msgid "Commands"
|
msgid "Commands"
|
||||||
msgstr "Naredbe"
|
msgstr "Naredbe"
|
||||||
|
|
||||||
msgid "Error while accessing recording!"
|
|
||||||
msgstr "Gre¹ka pri pristupanju snimke!"
|
|
||||||
|
|
||||||
msgid "Delete recording?"
|
msgid "Delete recording?"
|
||||||
msgstr "Obrisati snimku?"
|
msgstr "Obrisati snimku?"
|
||||||
|
|
||||||
@ -1103,6 +1103,12 @@ msgstr "Prika
|
|||||||
msgid "Setup.Replay$Show remaining time"
|
msgid "Setup.Replay$Show remaining time"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.Replay$Progress display time (s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.Replay$Pause replay when setting mark"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.Replay$Resume ID"
|
msgid "Setup.Replay$Resume ID"
|
||||||
msgstr "ID nastavka"
|
msgstr "ID nastavka"
|
||||||
|
|
||||||
@ -1385,3 +1391,6 @@ msgstr "Disk"
|
|||||||
|
|
||||||
msgid "free"
|
msgid "free"
|
||||||
msgstr "slobodno"
|
msgstr "slobodno"
|
||||||
|
|
||||||
|
#~ msgid "Error while accessing recording!"
|
||||||
|
#~ msgstr "Gre¹ka pri pristupanju snimke!"
|
||||||
|
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@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-11-18 14:31+0100\n"
|
"POT-Creation-Date: 2012-12-07 14:59+0100\n"
|
||||||
"PO-Revision-Date: 2012-01-02 11:54+0200\n"
|
"PO-Revision-Date: 2012-01-02 11:54+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 <vdr@linuxtv.org>\n"
|
"Language-Team: Hungarian <vdr@linuxtv.org>\n"
|
||||||
@ -413,6 +413,9 @@ msgstr "K
|
|||||||
msgid "Key$Info"
|
msgid "Key$Info"
|
||||||
msgstr "Információ"
|
msgstr "Információ"
|
||||||
|
|
||||||
|
msgid "Key$Play/Pause"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Key$Play"
|
msgid "Key$Play"
|
||||||
msgstr "Lejátszás"
|
msgstr "Lejátszás"
|
||||||
|
|
||||||
@ -741,9 +744,6 @@ msgstr "Kinyitni"
|
|||||||
msgid "Commands"
|
msgid "Commands"
|
||||||
msgstr "Parancsok"
|
msgstr "Parancsok"
|
||||||
|
|
||||||
msgid "Error while accessing recording!"
|
|
||||||
msgstr "Hiba a felvétel hozzáférésénél"
|
|
||||||
|
|
||||||
msgid "Delete recording?"
|
msgid "Delete recording?"
|
||||||
msgstr "Felvétel törlése?"
|
msgstr "Felvétel törlése?"
|
||||||
|
|
||||||
@ -1105,6 +1105,12 @@ msgstr "Lej
|
|||||||
msgid "Setup.Replay$Show remaining time"
|
msgid "Setup.Replay$Show remaining time"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.Replay$Progress display time (s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.Replay$Pause replay when setting mark"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.Replay$Resume ID"
|
msgid "Setup.Replay$Resume ID"
|
||||||
msgstr "Lejátszás ID"
|
msgstr "Lejátszás ID"
|
||||||
|
|
||||||
@ -1387,3 +1393,6 @@ msgstr "Lemez"
|
|||||||
|
|
||||||
msgid "free"
|
msgid "free"
|
||||||
msgstr "szabad"
|
msgstr "szabad"
|
||||||
|
|
||||||
|
#~ msgid "Error while accessing recording!"
|
||||||
|
#~ msgstr "Hiba a felvétel hozzáférésénél"
|
||||||
|
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@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-11-18 14:31+0100\n"
|
"POT-Creation-Date: 2012-12-07 14:59+0100\n"
|
||||||
"PO-Revision-Date: 2012-06-06 22:50+0100\n"
|
"PO-Revision-Date: 2012-06-06 22:50+0100\n"
|
||||||
"Last-Translator: Diego Pierotto <vdr-italian@tiscali.it>\n"
|
"Last-Translator: Diego Pierotto <vdr-italian@tiscali.it>\n"
|
||||||
"Language-Team: Italian <vdr@linuxtv.org>\n"
|
"Language-Team: Italian <vdr@linuxtv.org>\n"
|
||||||
@ -417,6 +417,9 @@ msgstr "Blu"
|
|||||||
msgid "Key$Info"
|
msgid "Key$Info"
|
||||||
msgstr "Info"
|
msgstr "Info"
|
||||||
|
|
||||||
|
msgid "Key$Play/Pause"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Key$Play"
|
msgid "Key$Play"
|
||||||
msgstr "Riproduci"
|
msgstr "Riproduci"
|
||||||
|
|
||||||
@ -745,9 +748,6 @@ msgstr "Apri"
|
|||||||
msgid "Commands"
|
msgid "Commands"
|
||||||
msgstr "Comandi"
|
msgstr "Comandi"
|
||||||
|
|
||||||
msgid "Error while accessing recording!"
|
|
||||||
msgstr "Errore accesso alla registrazione!"
|
|
||||||
|
|
||||||
msgid "Delete recording?"
|
msgid "Delete recording?"
|
||||||
msgstr "Eliminare la registrazione?"
|
msgstr "Eliminare la registrazione?"
|
||||||
|
|
||||||
@ -1108,6 +1108,12 @@ msgstr "Mostra modalità riproduzione"
|
|||||||
msgid "Setup.Replay$Show remaining time"
|
msgid "Setup.Replay$Show remaining time"
|
||||||
msgstr "Mostra tempo rimanente"
|
msgstr "Mostra tempo rimanente"
|
||||||
|
|
||||||
|
msgid "Setup.Replay$Progress display time (s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.Replay$Pause replay when setting mark"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.Replay$Resume ID"
|
msgid "Setup.Replay$Resume ID"
|
||||||
msgstr "ID di ripristino"
|
msgstr "ID di ripristino"
|
||||||
|
|
||||||
@ -1390,3 +1396,6 @@ msgstr "Disco"
|
|||||||
|
|
||||||
msgid "free"
|
msgid "free"
|
||||||
msgstr "disponibili"
|
msgstr "disponibili"
|
||||||
|
|
||||||
|
#~ msgid "Error while accessing recording!"
|
||||||
|
#~ msgstr "Errore accesso alla registrazione!"
|
||||||
|
17
po/lt_LT.po
17
po/lt_LT.po
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.7.16\n"
|
"Project-Id-Version: VDR 1.7.16\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-11-18 14:31+0100\n"
|
"POT-Creation-Date: 2012-12-07 14:59+0100\n"
|
||||||
"PO-Revision-Date: 2010-10-30 11:55+0200\n"
|
"PO-Revision-Date: 2010-10-30 11:55+0200\n"
|
||||||
"Last-Translator: Valdemaras Pipiras <varas@ambernet.lt>\n"
|
"Last-Translator: Valdemaras Pipiras <varas@ambernet.lt>\n"
|
||||||
"Language-Team: Lithuanian <vdr@linuxtv.org>\n"
|
"Language-Team: Lithuanian <vdr@linuxtv.org>\n"
|
||||||
@ -410,6 +410,9 @@ msgstr "Mėlyna"
|
|||||||
msgid "Key$Info"
|
msgid "Key$Info"
|
||||||
msgstr "Info"
|
msgstr "Info"
|
||||||
|
|
||||||
|
msgid "Key$Play/Pause"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Key$Play"
|
msgid "Key$Play"
|
||||||
msgstr "Grona"
|
msgstr "Grona"
|
||||||
|
|
||||||
@ -738,9 +741,6 @@ msgstr "Atidaryti"
|
|||||||
msgid "Commands"
|
msgid "Commands"
|
||||||
msgstr "Komandos"
|
msgstr "Komandos"
|
||||||
|
|
||||||
msgid "Error while accessing recording!"
|
|
||||||
msgstr "Klaida atidarant įrašą!"
|
|
||||||
|
|
||||||
msgid "Delete recording?"
|
msgid "Delete recording?"
|
||||||
msgstr "Ištrinti įrašą?"
|
msgstr "Ištrinti įrašą?"
|
||||||
|
|
||||||
@ -1101,6 +1101,12 @@ msgstr "Rodyti pakartojimo ręžimą"
|
|||||||
msgid "Setup.Replay$Show remaining time"
|
msgid "Setup.Replay$Show remaining time"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.Replay$Progress display time (s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.Replay$Pause replay when setting mark"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.Replay$Resume ID"
|
msgid "Setup.Replay$Resume ID"
|
||||||
msgstr "Kūrinio ID"
|
msgstr "Kūrinio ID"
|
||||||
|
|
||||||
@ -1383,3 +1389,6 @@ msgstr "Diskas"
|
|||||||
|
|
||||||
msgid "free"
|
msgid "free"
|
||||||
msgstr "laisva"
|
msgstr "laisva"
|
||||||
|
|
||||||
|
#~ msgid "Error while accessing recording!"
|
||||||
|
#~ msgstr "Klaida atidarant įrašą!"
|
||||||
|
63
po/mk_MK.po
63
po/mk_MK.po
@ -7,8 +7,8 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR-1.7.14\n"
|
"Project-Id-Version: VDR-1.7.14\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-11-18 14:31+0100\n"
|
"POT-Creation-Date: 2012-12-07 14:59+0100\n"
|
||||||
"PO-Revision-Date: 2010-03-11 00:54+0100\n"
|
"PO-Revision-Date: 2012-11-19 15:18+0100\n"
|
||||||
"Last-Translator: Dimitar Petrovski <dimeptr@gmail.com>\n"
|
"Last-Translator: Dimitar Petrovski <dimeptr@gmail.com>\n"
|
||||||
"Language-Team: Macedonian <en@li.org>\n"
|
"Language-Team: Macedonian <en@li.org>\n"
|
||||||
"Language: mk\n"
|
"Language: mk\n"
|
||||||
@ -75,7 +75,7 @@ msgid "Rolloff"
|
|||||||
msgstr "Рол-оф"
|
msgstr "Рол-оф"
|
||||||
|
|
||||||
msgid "PlpId"
|
msgid "PlpId"
|
||||||
msgstr ""
|
msgstr "PlpId"
|
||||||
|
|
||||||
msgid "Starting EPG scan"
|
msgid "Starting EPG scan"
|
||||||
msgstr "Започнувам скенирање на EPG"
|
msgstr "Започнувам скенирање на EPG"
|
||||||
@ -411,6 +411,9 @@ msgstr "Сино"
|
|||||||
msgid "Key$Info"
|
msgid "Key$Info"
|
||||||
msgstr "Инфо"
|
msgstr "Инфо"
|
||||||
|
|
||||||
|
msgid "Key$Play/Pause"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Key$Play"
|
msgid "Key$Play"
|
||||||
msgstr "Старт"
|
msgstr "Старт"
|
||||||
|
|
||||||
@ -644,10 +647,10 @@ msgid "Button$Folder"
|
|||||||
msgstr "Директориум"
|
msgstr "Директориум"
|
||||||
|
|
||||||
msgid "Button$Single"
|
msgid "Button$Single"
|
||||||
msgstr ""
|
msgstr "Единчен"
|
||||||
|
|
||||||
msgid "Button$Repeating"
|
msgid "Button$Repeating"
|
||||||
msgstr ""
|
msgstr "Периодичен"
|
||||||
|
|
||||||
msgid "First day"
|
msgid "First day"
|
||||||
msgstr "Прв ден"
|
msgstr "Прв ден"
|
||||||
@ -739,14 +742,11 @@ msgstr "Отвори"
|
|||||||
msgid "Commands"
|
msgid "Commands"
|
||||||
msgstr "Наредби"
|
msgstr "Наредби"
|
||||||
|
|
||||||
msgid "Error while accessing recording!"
|
|
||||||
msgstr "Грешка при пристап до снимката!"
|
|
||||||
|
|
||||||
msgid "Delete recording?"
|
msgid "Delete recording?"
|
||||||
msgstr "Избриши снимка?"
|
msgstr "Избриши снимка?"
|
||||||
|
|
||||||
msgid "Recording is being edited - really delete?"
|
msgid "Recording is being edited - really delete?"
|
||||||
msgstr ""
|
msgstr "Снимката се уредува - бриши?"
|
||||||
|
|
||||||
msgid "Error while deleting recording!"
|
msgid "Error while deleting recording!"
|
||||||
msgstr "Грешка при бришење на снимката!"
|
msgstr "Грешка при бришење на снимката!"
|
||||||
@ -848,19 +848,19 @@ msgid "Setup.OSD$Folders in timer menu"
|
|||||||
msgstr "Директориуми во менито за тајмер"
|
msgstr "Директориуми во менито за тајмер"
|
||||||
|
|
||||||
msgid "Setup.OSD$Number keys for characters"
|
msgid "Setup.OSD$Number keys for characters"
|
||||||
msgstr ""
|
msgstr "Нумерички копчиња за букви"
|
||||||
|
|
||||||
msgid "Setup.OSD$Color key 0"
|
msgid "Setup.OSD$Color key 0"
|
||||||
msgstr ""
|
msgstr "Копче во боја 0"
|
||||||
|
|
||||||
msgid "Setup.OSD$Color key 1"
|
msgid "Setup.OSD$Color key 1"
|
||||||
msgstr ""
|
msgstr "Копче во боја 1"
|
||||||
|
|
||||||
msgid "Setup.OSD$Color key 2"
|
msgid "Setup.OSD$Color key 2"
|
||||||
msgstr ""
|
msgstr "Копче во боја 2"
|
||||||
|
|
||||||
msgid "Setup.OSD$Color key 3"
|
msgid "Setup.OSD$Color key 3"
|
||||||
msgstr ""
|
msgstr "Копче во боја 3"
|
||||||
|
|
||||||
msgid "EPG"
|
msgid "EPG"
|
||||||
msgstr "EPG (електронски водич на програми)"
|
msgstr "EPG (електронски водич на програми)"
|
||||||
@ -931,7 +931,7 @@ msgid "Setup.DVB$Primary DVB interface"
|
|||||||
msgstr "Примарен DVB уред"
|
msgstr "Примарен DVB уред"
|
||||||
|
|
||||||
msgid "Setup.DVB$Standard compliance"
|
msgid "Setup.DVB$Standard compliance"
|
||||||
msgstr ""
|
msgstr "Согласност со стандард"
|
||||||
|
|
||||||
msgid "Setup.DVB$Video format"
|
msgid "Setup.DVB$Video format"
|
||||||
msgstr "Видео формат"
|
msgstr "Видео формат"
|
||||||
@ -986,10 +986,10 @@ msgstr "Форна LNB фрекфенција (MHz)"
|
|||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Setup.LNB$Device %d connected to sat cable"
|
msgid "Setup.LNB$Device %d connected to sat cable"
|
||||||
msgstr ""
|
msgstr "Уред %d поврзан со сателитски кабел"
|
||||||
|
|
||||||
msgid "Setup.LNB$own"
|
msgid "Setup.LNB$own"
|
||||||
msgstr ""
|
msgstr "свој"
|
||||||
|
|
||||||
msgid "CAM reset"
|
msgid "CAM reset"
|
||||||
msgstr "Рестартирај CAM"
|
msgstr "Рестартирај CAM"
|
||||||
@ -1079,7 +1079,7 @@ msgid "Setup.Recording$Instant rec. time (min)"
|
|||||||
msgstr "Траење на директно снимање (мин)"
|
msgstr "Траење на директно снимање (мин)"
|
||||||
|
|
||||||
msgid "Setup.Recording$present event"
|
msgid "Setup.Recording$present event"
|
||||||
msgstr ""
|
msgstr "сегашен настан"
|
||||||
|
|
||||||
msgid "Setup.Recording$Max. video file size (MB)"
|
msgid "Setup.Recording$Max. video file size (MB)"
|
||||||
msgstr "Максимална големина на датотека (MB)"
|
msgstr "Максимална големина на датотека (MB)"
|
||||||
@ -1100,6 +1100,12 @@ msgid "Setup.Replay$Show replay mode"
|
|||||||
msgstr "Прикажи начин на пуштање"
|
msgstr "Прикажи начин на пуштање"
|
||||||
|
|
||||||
msgid "Setup.Replay$Show remaining time"
|
msgid "Setup.Replay$Show remaining time"
|
||||||
|
msgstr "Прикажи преостанато време"
|
||||||
|
|
||||||
|
msgid "Setup.Replay$Progress display time (s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.Replay$Pause replay when setting mark"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.Replay$Resume ID"
|
msgid "Setup.Replay$Resume ID"
|
||||||
@ -1136,7 +1142,7 @@ msgid "Setup.Miscellaneous$Channels wrap"
|
|||||||
msgstr "Премотување канали"
|
msgstr "Премотување канали"
|
||||||
|
|
||||||
msgid "Setup.Miscellaneous$Show channel names with source"
|
msgid "Setup.Miscellaneous$Show channel names with source"
|
||||||
msgstr ""
|
msgstr "Прикажи имиња на канали со извор"
|
||||||
|
|
||||||
msgid "Setup.Miscellaneous$Emergency exit"
|
msgid "Setup.Miscellaneous$Emergency exit"
|
||||||
msgstr "Итен излез"
|
msgstr "Итен излез"
|
||||||
@ -1215,7 +1221,7 @@ msgid "No editing marks defined!"
|
|||||||
msgstr "Нема одредено ознаки за сечење!"
|
msgstr "Нема одредено ознаки за сечење!"
|
||||||
|
|
||||||
msgid "No editing sequences defined!"
|
msgid "No editing sequences defined!"
|
||||||
msgstr ""
|
msgstr "Нема одредено секвенци за уредување!"
|
||||||
|
|
||||||
msgid "Can't start editing process!"
|
msgid "Can't start editing process!"
|
||||||
msgstr "Не може да почне уредување!"
|
msgstr "Не може да почне уредување!"
|
||||||
@ -1260,7 +1266,7 @@ msgid "Index file regeneration complete"
|
|||||||
msgstr "Регенерирањето на индексот заврши"
|
msgstr "Регенерирањето на индексот заврши"
|
||||||
|
|
||||||
msgid "Index file regeneration failed!"
|
msgid "Index file regeneration failed!"
|
||||||
msgstr ""
|
msgstr "Регенерирањето на индексот е неуспешен!"
|
||||||
|
|
||||||
msgid "Can't shutdown - option '-s' not given!"
|
msgid "Can't shutdown - option '-s' not given!"
|
||||||
msgstr "Невозможно гаснење - недостасува опцијата '-s'!"
|
msgstr "Невозможно гаснење - недостасува опцијата '-s'!"
|
||||||
@ -1299,22 +1305,22 @@ msgid "Classic VDR"
|
|||||||
msgstr "Класичен VDR"
|
msgstr "Класичен VDR"
|
||||||
|
|
||||||
msgid "DISK"
|
msgid "DISK"
|
||||||
msgstr ""
|
msgstr "ДИСК"
|
||||||
|
|
||||||
msgid "LOAD"
|
msgid "LOAD"
|
||||||
msgstr ""
|
msgstr "ТОВАР"
|
||||||
|
|
||||||
msgid "TIMERS"
|
msgid "TIMERS"
|
||||||
msgstr ""
|
msgstr "ТАЈМЕР"
|
||||||
|
|
||||||
msgid "DEVICES"
|
msgid "DEVICES"
|
||||||
msgstr ""
|
msgstr "УРЕДИ"
|
||||||
|
|
||||||
msgid "LIVE"
|
msgid "LIVE"
|
||||||
msgstr ""
|
msgstr "ЖИВО"
|
||||||
|
|
||||||
msgid "PLAY"
|
msgid "PLAY"
|
||||||
msgstr ""
|
msgstr "ПУШТИ"
|
||||||
|
|
||||||
msgid "ST:TNG Panels"
|
msgid "ST:TNG Panels"
|
||||||
msgstr "ST:TNG Панели"
|
msgstr "ST:TNG Панели"
|
||||||
@ -1384,3 +1390,6 @@ msgstr "Диск"
|
|||||||
|
|
||||||
msgid "free"
|
msgid "free"
|
||||||
msgstr "слободен"
|
msgstr "слободен"
|
||||||
|
|
||||||
|
#~ msgid "Error while accessing recording!"
|
||||||
|
#~ msgstr "Грешка при пристап до снимката!"
|
||||||
|
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@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-11-18 14:31+0100\n"
|
"POT-Creation-Date: 2012-12-07 14:59+0100\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 <vdr@linuxtv.org>\n"
|
"Language-Team: Dutch <vdr@linuxtv.org>\n"
|
||||||
@ -414,6 +414,9 @@ msgstr "Blauw"
|
|||||||
msgid "Key$Info"
|
msgid "Key$Info"
|
||||||
msgstr "Info"
|
msgstr "Info"
|
||||||
|
|
||||||
|
msgid "Key$Play/Pause"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Key$Play"
|
msgid "Key$Play"
|
||||||
msgstr "Weergeven"
|
msgstr "Weergeven"
|
||||||
|
|
||||||
@ -742,9 +745,6 @@ msgstr "Openen"
|
|||||||
msgid "Commands"
|
msgid "Commands"
|
||||||
msgstr "Commando's"
|
msgstr "Commando's"
|
||||||
|
|
||||||
msgid "Error while accessing recording!"
|
|
||||||
msgstr "Fout bij lezen opname!"
|
|
||||||
|
|
||||||
msgid "Delete recording?"
|
msgid "Delete recording?"
|
||||||
msgstr "Opname verwijderen?"
|
msgstr "Opname verwijderen?"
|
||||||
|
|
||||||
@ -1105,6 +1105,12 @@ msgstr "Weergave mode aangeven"
|
|||||||
msgid "Setup.Replay$Show remaining time"
|
msgid "Setup.Replay$Show remaining time"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.Replay$Progress display time (s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.Replay$Pause replay when setting mark"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.Replay$Resume ID"
|
msgid "Setup.Replay$Resume ID"
|
||||||
msgstr "Hervattings ID"
|
msgstr "Hervattings ID"
|
||||||
|
|
||||||
@ -1387,3 +1393,6 @@ msgstr "Schijf"
|
|||||||
|
|
||||||
msgid "free"
|
msgid "free"
|
||||||
msgstr "vrij"
|
msgstr "vrij"
|
||||||
|
|
||||||
|
#~ msgid "Error while accessing recording!"
|
||||||
|
#~ msgstr "Fout bij lezen opname!"
|
||||||
|
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@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-11-18 14:31+0100\n"
|
"POT-Creation-Date: 2012-12-07 14:59+0100\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 Nynorsk <vdr@linuxtv.org>\n"
|
"Language-Team: Norwegian Nynorsk <vdr@linuxtv.org>\n"
|
||||||
@ -411,6 +411,9 @@ msgstr "Bl
|
|||||||
msgid "Key$Info"
|
msgid "Key$Info"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Key$Play/Pause"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Key$Play"
|
msgid "Key$Play"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -739,9 +742,6 @@ msgstr "
|
|||||||
msgid "Commands"
|
msgid "Commands"
|
||||||
msgstr "Kommandoer"
|
msgstr "Kommandoer"
|
||||||
|
|
||||||
msgid "Error while accessing recording!"
|
|
||||||
msgstr "Feil under lesing av opptak!"
|
|
||||||
|
|
||||||
msgid "Delete recording?"
|
msgid "Delete recording?"
|
||||||
msgstr "Slette opptak?"
|
msgstr "Slette opptak?"
|
||||||
|
|
||||||
@ -1102,6 +1102,12 @@ msgstr "Vis avspillingsmodus"
|
|||||||
msgid "Setup.Replay$Show remaining time"
|
msgid "Setup.Replay$Show remaining time"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.Replay$Progress display time (s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.Replay$Pause replay when setting mark"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.Replay$Resume ID"
|
msgid "Setup.Replay$Resume ID"
|
||||||
msgstr "Resume ID"
|
msgstr "Resume ID"
|
||||||
|
|
||||||
@ -1384,3 +1390,6 @@ msgstr "Disk"
|
|||||||
|
|
||||||
msgid "free"
|
msgid "free"
|
||||||
msgstr "ledig"
|
msgstr "ledig"
|
||||||
|
|
||||||
|
#~ msgid "Error while accessing recording!"
|
||||||
|
#~ msgstr "Feil under lesing av opptak!"
|
||||||
|
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@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-11-18 14:31+0100\n"
|
"POT-Creation-Date: 2012-12-07 14:59+0100\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 <vdr@linuxtv.org>\n"
|
"Language-Team: Polish <vdr@linuxtv.org>\n"
|
||||||
@ -411,6 +411,9 @@ msgstr "Niebieski"
|
|||||||
msgid "Key$Info"
|
msgid "Key$Info"
|
||||||
msgstr "Info"
|
msgstr "Info"
|
||||||
|
|
||||||
|
msgid "Key$Play/Pause"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Key$Play"
|
msgid "Key$Play"
|
||||||
msgstr "Odtwórz"
|
msgstr "Odtwórz"
|
||||||
|
|
||||||
@ -739,9 +742,6 @@ msgstr "Otw
|
|||||||
msgid "Commands"
|
msgid "Commands"
|
||||||
msgstr "Polecenia"
|
msgstr "Polecenia"
|
||||||
|
|
||||||
msgid "Error while accessing recording!"
|
|
||||||
msgstr "Bl±d podczas dostêpu do nagrania!"
|
|
||||||
|
|
||||||
msgid "Delete recording?"
|
msgid "Delete recording?"
|
||||||
msgstr "Usun±æ nagranie?"
|
msgstr "Usun±æ nagranie?"
|
||||||
|
|
||||||
@ -1102,6 +1102,12 @@ msgstr "Pokazuj tryb odtwarzania"
|
|||||||
msgid "Setup.Replay$Show remaining time"
|
msgid "Setup.Replay$Show remaining time"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.Replay$Progress display time (s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.Replay$Pause replay when setting mark"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.Replay$Resume ID"
|
msgid "Setup.Replay$Resume ID"
|
||||||
msgstr "ID wznowienia"
|
msgstr "ID wznowienia"
|
||||||
|
|
||||||
@ -1384,3 +1390,6 @@ msgstr "Dysk"
|
|||||||
|
|
||||||
msgid "free"
|
msgid "free"
|
||||||
msgstr "wolnego"
|
msgstr "wolnego"
|
||||||
|
|
||||||
|
#~ msgid "Error while accessing recording!"
|
||||||
|
#~ msgstr "Bl±d podczas dostêpu do nagrania!"
|
||||||
|
17
po/pt_PT.po
17
po/pt_PT.po
@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.7.15\n"
|
"Project-Id-Version: VDR 1.7.15\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-11-18 14:31+0100\n"
|
"POT-Creation-Date: 2012-12-07 14:59+0100\n"
|
||||||
"PO-Revision-Date: 2010-03-28 22:49+0100\n"
|
"PO-Revision-Date: 2010-03-28 22:49+0100\n"
|
||||||
"Last-Translator: Cris Silva <hudokkow@gmail.com>\n"
|
"Last-Translator: Cris Silva <hudokkow@gmail.com>\n"
|
||||||
"Language-Team: Portuguese <vdr@linuxtv.org>\n"
|
"Language-Team: Portuguese <vdr@linuxtv.org>\n"
|
||||||
@ -411,6 +411,9 @@ msgstr "Azul"
|
|||||||
msgid "Key$Info"
|
msgid "Key$Info"
|
||||||
msgstr "Info"
|
msgstr "Info"
|
||||||
|
|
||||||
|
msgid "Key$Play/Pause"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Key$Play"
|
msgid "Key$Play"
|
||||||
msgstr "Reproduzir"
|
msgstr "Reproduzir"
|
||||||
|
|
||||||
@ -739,9 +742,6 @@ msgstr "Abrir"
|
|||||||
msgid "Commands"
|
msgid "Commands"
|
||||||
msgstr "Comandos"
|
msgstr "Comandos"
|
||||||
|
|
||||||
msgid "Error while accessing recording!"
|
|
||||||
msgstr "Erro a aceder às gravações!"
|
|
||||||
|
|
||||||
msgid "Delete recording?"
|
msgid "Delete recording?"
|
||||||
msgstr "Eliminar gravação?"
|
msgstr "Eliminar gravação?"
|
||||||
|
|
||||||
@ -1102,6 +1102,12 @@ msgstr "Mostrar modo de reprodu
|
|||||||
msgid "Setup.Replay$Show remaining time"
|
msgid "Setup.Replay$Show remaining time"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.Replay$Progress display time (s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.Replay$Pause replay when setting mark"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.Replay$Resume ID"
|
msgid "Setup.Replay$Resume ID"
|
||||||
msgstr "ID de resumo"
|
msgstr "ID de resumo"
|
||||||
|
|
||||||
@ -1384,3 +1390,6 @@ msgstr "Disco"
|
|||||||
|
|
||||||
msgid "free"
|
msgid "free"
|
||||||
msgstr "livre"
|
msgstr "livre"
|
||||||
|
|
||||||
|
#~ msgid "Error while accessing recording!"
|
||||||
|
#~ msgstr "Erro a aceder às gravações!"
|
||||||
|
17
po/ro_RO.po
17
po/ro_RO.po
@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.7.12\n"
|
"Project-Id-Version: VDR 1.7.12\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-11-18 14:31+0100\n"
|
"POT-Creation-Date: 2012-12-07 14:59+0100\n"
|
||||||
"PO-Revision-Date: 2012-11-05 01:28+0100\n"
|
"PO-Revision-Date: 2012-11-05 01:28+0100\n"
|
||||||
"Last-Translator: Lucian Muresan <lucianm@users.sourceforge.net>\n"
|
"Last-Translator: Lucian Muresan <lucianm@users.sourceforge.net>\n"
|
||||||
"Language-Team: Romanian <vdr@linuxtv.org>\n"
|
"Language-Team: Romanian <vdr@linuxtv.org>\n"
|
||||||
@ -413,6 +413,9 @@ msgstr "Albastru"
|
|||||||
msgid "Key$Info"
|
msgid "Key$Info"
|
||||||
msgstr "Info"
|
msgstr "Info"
|
||||||
|
|
||||||
|
msgid "Key$Play/Pause"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Key$Play"
|
msgid "Key$Play"
|
||||||
msgstr "Redare"
|
msgstr "Redare"
|
||||||
|
|
||||||
@ -741,9 +744,6 @@ msgstr "Deschide"
|
|||||||
msgid "Commands"
|
msgid "Commands"
|
||||||
msgstr "Comenzi"
|
msgstr "Comenzi"
|
||||||
|
|
||||||
msgid "Error while accessing recording!"
|
|
||||||
msgstr "Eroare la accesarea înregistrării"
|
|
||||||
|
|
||||||
msgid "Delete recording?"
|
msgid "Delete recording?"
|
||||||
msgstr "Şterg înregistrarea?"
|
msgstr "Şterg înregistrarea?"
|
||||||
|
|
||||||
@ -1104,6 +1104,12 @@ msgstr "Afişează redarea"
|
|||||||
msgid "Setup.Replay$Show remaining time"
|
msgid "Setup.Replay$Show remaining time"
|
||||||
msgstr "Arată timpul rămas"
|
msgstr "Arată timpul rămas"
|
||||||
|
|
||||||
|
msgid "Setup.Replay$Progress display time (s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.Replay$Pause replay when setting mark"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.Replay$Resume ID"
|
msgid "Setup.Replay$Resume ID"
|
||||||
msgstr "Identificator continuare"
|
msgstr "Identificator continuare"
|
||||||
|
|
||||||
@ -1386,3 +1392,6 @@ msgstr "Disc"
|
|||||||
|
|
||||||
msgid "free"
|
msgid "free"
|
||||||
msgstr "liber"
|
msgstr "liber"
|
||||||
|
|
||||||
|
#~ msgid "Error while accessing recording!"
|
||||||
|
#~ msgstr "Eroare la accesarea înregistrării"
|
||||||
|
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@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-11-18 14:31+0100\n"
|
"POT-Creation-Date: 2012-12-07 14:59+0100\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 <vdr@linuxtv.org>\n"
|
"Language-Team: Russian <vdr@linuxtv.org>\n"
|
||||||
@ -411,6 +411,9 @@ msgstr "
|
|||||||
msgid "Key$Info"
|
msgid "Key$Info"
|
||||||
msgstr "¸ÝäÞ"
|
msgstr "¸ÝäÞ"
|
||||||
|
|
||||||
|
msgid "Key$Play/Pause"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Key$Play"
|
msgid "Key$Play"
|
||||||
msgstr "²ÞáßàÞØ×ÒÕÔÕÝØÕ"
|
msgstr "²ÞáßàÞØ×ÒÕÔÕÝØÕ"
|
||||||
|
|
||||||
@ -739,9 +742,6 @@ msgstr "
|
|||||||
msgid "Commands"
|
msgid "Commands"
|
||||||
msgstr "ºÞÜÐÝÔë"
|
msgstr "ºÞÜÐÝÔë"
|
||||||
|
|
||||||
msgid "Error while accessing recording!"
|
|
||||||
msgstr "¾èØÑÚÐ ÔÞáâãßÐ Ú ×ÐߨáØ!"
|
|
||||||
|
|
||||||
msgid "Delete recording?"
|
msgid "Delete recording?"
|
||||||
msgstr "ÁâÕàÕâì ×Ðߨáì?"
|
msgstr "ÁâÕàÕâì ×Ðߨáì?"
|
||||||
|
|
||||||
@ -1102,6 +1102,12 @@ msgstr "
|
|||||||
msgid "Setup.Replay$Show remaining time"
|
msgid "Setup.Replay$Show remaining time"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.Replay$Progress display time (s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.Replay$Pause replay when setting mark"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.Replay$Resume ID"
|
msgid "Setup.Replay$Resume ID"
|
||||||
msgstr "ID ÒÞáßàÞØ×ÒÕÔÕÝØï"
|
msgstr "ID ÒÞáßàÞØ×ÒÕÔÕÝØï"
|
||||||
|
|
||||||
@ -1384,3 +1390,6 @@ msgstr "
|
|||||||
|
|
||||||
msgid "free"
|
msgid "free"
|
||||||
msgstr "áÒÞÑÞÔÝÞ"
|
msgstr "áÒÞÑÞÔÝÞ"
|
||||||
|
|
||||||
|
#~ msgid "Error while accessing recording!"
|
||||||
|
#~ msgstr "¾èØÑÚÐ ÔÞáâãßÐ Ú ×ÐߨáØ!"
|
||||||
|
17
po/sk_SK.po
17
po/sk_SK.po
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.7.16\n"
|
"Project-Id-Version: VDR 1.7.16\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-11-18 14:31+0100\n"
|
"POT-Creation-Date: 2012-12-07 14:59+0100\n"
|
||||||
"PO-Revision-Date: 2011-02-15 16:29+0100\n"
|
"PO-Revision-Date: 2011-02-15 16:29+0100\n"
|
||||||
"Last-Translator: Milan Hrala <hrala.milan@gmail.com>\n"
|
"Last-Translator: Milan Hrala <hrala.milan@gmail.com>\n"
|
||||||
"Language-Team: Slovak <vdr@linuxtv.org>\n"
|
"Language-Team: Slovak <vdr@linuxtv.org>\n"
|
||||||
@ -410,6 +410,9 @@ msgstr "Modr
|
|||||||
msgid "Key$Info"
|
msgid "Key$Info"
|
||||||
msgstr "Info"
|
msgstr "Info"
|
||||||
|
|
||||||
|
msgid "Key$Play/Pause"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Key$Play"
|
msgid "Key$Play"
|
||||||
msgstr "Prehra»"
|
msgstr "Prehra»"
|
||||||
|
|
||||||
@ -738,9 +741,6 @@ msgstr "Otvori
|
|||||||
msgid "Commands"
|
msgid "Commands"
|
||||||
msgstr "Príkazy"
|
msgstr "Príkazy"
|
||||||
|
|
||||||
msgid "Error while accessing recording!"
|
|
||||||
msgstr "Chyba pri prístupe k nahrávkam!"
|
|
||||||
|
|
||||||
msgid "Delete recording?"
|
msgid "Delete recording?"
|
||||||
msgstr "Zmaza» nahrávku?"
|
msgstr "Zmaza» nahrávku?"
|
||||||
|
|
||||||
@ -1101,6 +1101,12 @@ msgstr "Zobrazi
|
|||||||
msgid "Setup.Replay$Show remaining time"
|
msgid "Setup.Replay$Show remaining time"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.Replay$Progress display time (s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.Replay$Pause replay when setting mark"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.Replay$Resume ID"
|
msgid "Setup.Replay$Resume ID"
|
||||||
msgstr "ID obnovenie"
|
msgstr "ID obnovenie"
|
||||||
|
|
||||||
@ -1383,3 +1389,6 @@ msgstr "Disk"
|
|||||||
|
|
||||||
msgid "free"
|
msgid "free"
|
||||||
msgstr "volne"
|
msgstr "volne"
|
||||||
|
|
||||||
|
#~ msgid "Error while accessing recording!"
|
||||||
|
#~ msgstr "Chyba pri prístupe k nahrávkam!"
|
||||||
|
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@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-11-18 14:31+0100\n"
|
"POT-Creation-Date: 2012-12-07 14:59+0100\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 <vdr@linuxtv.org>\n"
|
"Language-Team: Slovenian <vdr@linuxtv.org>\n"
|
||||||
@ -411,6 +411,9 @@ msgstr "Modra"
|
|||||||
msgid "Key$Info"
|
msgid "Key$Info"
|
||||||
msgstr "Info"
|
msgstr "Info"
|
||||||
|
|
||||||
|
msgid "Key$Play/Pause"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Key$Play"
|
msgid "Key$Play"
|
||||||
msgstr "Predvajaj"
|
msgstr "Predvajaj"
|
||||||
|
|
||||||
@ -739,9 +742,6 @@ msgstr "Odpri"
|
|||||||
msgid "Commands"
|
msgid "Commands"
|
||||||
msgstr "Ukazi"
|
msgstr "Ukazi"
|
||||||
|
|
||||||
msgid "Error while accessing recording!"
|
|
||||||
msgstr "Napaka pri dostopu do posnetka!"
|
|
||||||
|
|
||||||
msgid "Delete recording?"
|
msgid "Delete recording?"
|
||||||
msgstr "Izbri¹i posnetek?"
|
msgstr "Izbri¹i posnetek?"
|
||||||
|
|
||||||
@ -1102,6 +1102,12 @@ msgstr "Prika
|
|||||||
msgid "Setup.Replay$Show remaining time"
|
msgid "Setup.Replay$Show remaining time"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.Replay$Progress display time (s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.Replay$Pause replay when setting mark"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.Replay$Resume ID"
|
msgid "Setup.Replay$Resume ID"
|
||||||
msgstr "ID za predvajanje"
|
msgstr "ID za predvajanje"
|
||||||
|
|
||||||
@ -1384,3 +1390,6 @@ msgstr "Disk"
|
|||||||
|
|
||||||
msgid "free"
|
msgid "free"
|
||||||
msgstr "prosto"
|
msgstr "prosto"
|
||||||
|
|
||||||
|
#~ msgid "Error while accessing recording!"
|
||||||
|
#~ msgstr "Napaka pri dostopu do posnetka!"
|
||||||
|
17
po/sr_SR.po
17
po/sr_SR.po
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.7.1\n"
|
"Project-Id-Version: VDR 1.7.1\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-11-18 14:31+0100\n"
|
"POT-Creation-Date: 2012-12-07 14:59+0100\n"
|
||||||
"PO-Revision-Date: 2011-01-09 15:57+0100\n"
|
"PO-Revision-Date: 2011-01-09 15:57+0100\n"
|
||||||
"Last-Translator: Milan Cvijanoviæ <elcom_cvijo@hotmail.com>\n"
|
"Last-Translator: Milan Cvijanoviæ <elcom_cvijo@hotmail.com>\n"
|
||||||
"Language-Team: Serbian <vdr@linuxtv.org>\n"
|
"Language-Team: Serbian <vdr@linuxtv.org>\n"
|
||||||
@ -412,6 +412,9 @@ msgstr "Plavo"
|
|||||||
msgid "Key$Info"
|
msgid "Key$Info"
|
||||||
msgstr "Info"
|
msgstr "Info"
|
||||||
|
|
||||||
|
msgid "Key$Play/Pause"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Key$Play"
|
msgid "Key$Play"
|
||||||
msgstr "Start"
|
msgstr "Start"
|
||||||
|
|
||||||
@ -747,9 +750,6 @@ msgstr "Meni"
|
|||||||
msgid "Commands"
|
msgid "Commands"
|
||||||
msgstr "Naredbe"
|
msgstr "Naredbe"
|
||||||
|
|
||||||
msgid "Error while accessing recording!"
|
|
||||||
msgstr "Gre¹ka prilikom pristupa snimanju!"
|
|
||||||
|
|
||||||
msgid "Delete recording?"
|
msgid "Delete recording?"
|
||||||
msgstr "Obri¹i snimku?"
|
msgstr "Obri¹i snimku?"
|
||||||
|
|
||||||
@ -1124,6 +1124,12 @@ msgstr "Prika
|
|||||||
msgid "Setup.Replay$Show remaining time"
|
msgid "Setup.Replay$Show remaining time"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.Replay$Progress display time (s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.Replay$Pause replay when setting mark"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.Replay$Resume ID"
|
msgid "Setup.Replay$Resume ID"
|
||||||
msgstr "ID nastavka"
|
msgstr "ID nastavka"
|
||||||
|
|
||||||
@ -1410,3 +1416,6 @@ msgstr "Disk"
|
|||||||
|
|
||||||
msgid "free"
|
msgid "free"
|
||||||
msgstr "slobodno"
|
msgstr "slobodno"
|
||||||
|
|
||||||
|
#~ msgid "Error while accessing recording!"
|
||||||
|
#~ msgstr "Gre¹ka prilikom pristupa snimanju!"
|
||||||
|
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@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-11-18 14:31+0100\n"
|
"POT-Creation-Date: 2012-12-07 14:59+0100\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 <vdr@linuxtv.org>\n"
|
"Language-Team: Swedish <vdr@linuxtv.org>\n"
|
||||||
@ -413,6 +413,9 @@ msgstr "Bl
|
|||||||
msgid "Key$Info"
|
msgid "Key$Info"
|
||||||
msgstr "Info"
|
msgstr "Info"
|
||||||
|
|
||||||
|
msgid "Key$Play/Pause"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Key$Play"
|
msgid "Key$Play"
|
||||||
msgstr "Spela upp"
|
msgstr "Spela upp"
|
||||||
|
|
||||||
@ -741,9 +744,6 @@ msgstr "
|
|||||||
msgid "Commands"
|
msgid "Commands"
|
||||||
msgstr "Kommandon"
|
msgstr "Kommandon"
|
||||||
|
|
||||||
msgid "Error while accessing recording!"
|
|
||||||
msgstr "Inspelningen går inte att läsa!"
|
|
||||||
|
|
||||||
msgid "Delete recording?"
|
msgid "Delete recording?"
|
||||||
msgstr "Ta bort inspelningen?"
|
msgstr "Ta bort inspelningen?"
|
||||||
|
|
||||||
@ -1104,6 +1104,12 @@ msgstr "Visa uppspelningsl
|
|||||||
msgid "Setup.Replay$Show remaining time"
|
msgid "Setup.Replay$Show remaining time"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.Replay$Progress display time (s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.Replay$Pause replay when setting mark"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.Replay$Resume ID"
|
msgid "Setup.Replay$Resume ID"
|
||||||
msgstr "Återuppta ID"
|
msgstr "Återuppta ID"
|
||||||
|
|
||||||
@ -1386,3 +1392,6 @@ msgstr "Disk"
|
|||||||
|
|
||||||
msgid "free"
|
msgid "free"
|
||||||
msgstr "ledigt"
|
msgstr "ledigt"
|
||||||
|
|
||||||
|
#~ msgid "Error while accessing recording!"
|
||||||
|
#~ msgstr "Inspelningen går inte att läsa!"
|
||||||
|
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@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-11-18 14:31+0100\n"
|
"POT-Creation-Date: 2012-12-07 14:59+0100\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 <vdr@linuxtv.org>\n"
|
"Language-Team: Turkish <vdr@linuxtv.org>\n"
|
||||||
@ -410,6 +410,9 @@ msgstr "Mavi"
|
|||||||
msgid "Key$Info"
|
msgid "Key$Info"
|
||||||
msgstr "Bilgi"
|
msgstr "Bilgi"
|
||||||
|
|
||||||
|
msgid "Key$Play/Pause"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Key$Play"
|
msgid "Key$Play"
|
||||||
msgstr "Göster"
|
msgstr "Göster"
|
||||||
|
|
||||||
@ -738,9 +741,6 @@ msgstr "A
|
|||||||
msgid "Commands"
|
msgid "Commands"
|
||||||
msgstr "Komutlar"
|
msgstr "Komutlar"
|
||||||
|
|
||||||
msgid "Error while accessing recording!"
|
|
||||||
msgstr "Kayýt okuma hatasý!"
|
|
||||||
|
|
||||||
msgid "Delete recording?"
|
msgid "Delete recording?"
|
||||||
msgstr "Kayýtý sil?"
|
msgstr "Kayýtý sil?"
|
||||||
|
|
||||||
@ -1101,6 +1101,12 @@ msgstr "G
|
|||||||
msgid "Setup.Replay$Show remaining time"
|
msgid "Setup.Replay$Show remaining time"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.Replay$Progress display time (s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.Replay$Pause replay when setting mark"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.Replay$Resume ID"
|
msgid "Setup.Replay$Resume ID"
|
||||||
msgstr "Gösteriþ ID'si"
|
msgstr "Gösteriþ ID'si"
|
||||||
|
|
||||||
@ -1383,3 +1389,6 @@ msgstr "Disk"
|
|||||||
|
|
||||||
msgid "free"
|
msgid "free"
|
||||||
msgstr "boþ"
|
msgstr "boþ"
|
||||||
|
|
||||||
|
#~ msgid "Error while accessing recording!"
|
||||||
|
#~ msgstr "Kayýt okuma hatasý!"
|
||||||
|
17
po/uk_UA.po
17
po/uk_UA.po
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.7.7\n"
|
"Project-Id-Version: VDR 1.7.7\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-11-18 14:31+0100\n"
|
"POT-Creation-Date: 2012-12-07 14:59+0100\n"
|
||||||
"PO-Revision-Date: 2010-04-25 16:35+0200\n"
|
"PO-Revision-Date: 2010-04-25 16:35+0200\n"
|
||||||
"Last-Translator: Yarema aka Knedlyk <yupadmin@gmail.com>\n"
|
"Last-Translator: Yarema aka Knedlyk <yupadmin@gmail.com>\n"
|
||||||
"Language-Team: Ukrainian <vdr@linuxtv.org>\n"
|
"Language-Team: Ukrainian <vdr@linuxtv.org>\n"
|
||||||
@ -410,6 +410,9 @@ msgstr "Синя"
|
|||||||
msgid "Key$Info"
|
msgid "Key$Info"
|
||||||
msgstr "Інфо"
|
msgstr "Інфо"
|
||||||
|
|
||||||
|
msgid "Key$Play/Pause"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Key$Play"
|
msgid "Key$Play"
|
||||||
msgstr "Програвання"
|
msgstr "Програвання"
|
||||||
|
|
||||||
@ -738,9 +741,6 @@ msgstr "Відкрити"
|
|||||||
msgid "Commands"
|
msgid "Commands"
|
||||||
msgstr "Команди"
|
msgstr "Команди"
|
||||||
|
|
||||||
msgid "Error while accessing recording!"
|
|
||||||
msgstr "Помилка доступу до запису!"
|
|
||||||
|
|
||||||
msgid "Delete recording?"
|
msgid "Delete recording?"
|
||||||
msgstr "Витерти запис?"
|
msgstr "Витерти запис?"
|
||||||
|
|
||||||
@ -1101,6 +1101,12 @@ msgstr "Віображати режим перегляду"
|
|||||||
msgid "Setup.Replay$Show remaining time"
|
msgid "Setup.Replay$Show remaining time"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.Replay$Progress display time (s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.Replay$Pause replay when setting mark"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.Replay$Resume ID"
|
msgid "Setup.Replay$Resume ID"
|
||||||
msgstr "ID продовження"
|
msgstr "ID продовження"
|
||||||
|
|
||||||
@ -1383,3 +1389,6 @@ msgstr "Диск"
|
|||||||
|
|
||||||
msgid "free"
|
msgid "free"
|
||||||
msgstr "вільно"
|
msgstr "вільно"
|
||||||
|
|
||||||
|
#~ msgid "Error while accessing recording!"
|
||||||
|
#~ msgstr "Помилка доступу до запису!"
|
||||||
|
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@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2012-11-18 14:31+0100\n"
|
"POT-Creation-Date: 2012-12-07 14:59+0100\n"
|
||||||
"PO-Revision-Date: 2009-09-23 23:50+0800\n"
|
"PO-Revision-Date: 2009-09-23 23:50+0800\n"
|
||||||
"Last-Translator: Nan Feng <nfgx@21cn.com>\n"
|
"Last-Translator: Nan Feng <nfgx@21cn.com>\n"
|
||||||
"Language-Team: Chinese (simplified) <vdr@linuxtv.org>\n"
|
"Language-Team: Chinese (simplified) <vdr@linuxtv.org>\n"
|
||||||
@ -413,6 +413,9 @@ msgstr "蓝"
|
|||||||
msgid "Key$Info"
|
msgid "Key$Info"
|
||||||
msgstr "信息"
|
msgstr "信息"
|
||||||
|
|
||||||
|
msgid "Key$Play/Pause"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Key$Play"
|
msgid "Key$Play"
|
||||||
msgstr "播放"
|
msgstr "播放"
|
||||||
|
|
||||||
@ -741,9 +744,6 @@ msgstr "打开"
|
|||||||
msgid "Commands"
|
msgid "Commands"
|
||||||
msgstr "常用操作命令"
|
msgstr "常用操作命令"
|
||||||
|
|
||||||
msgid "Error while accessing recording!"
|
|
||||||
msgstr "存取录像错误!"
|
|
||||||
|
|
||||||
msgid "Delete recording?"
|
msgid "Delete recording?"
|
||||||
msgstr "是否删除录像?"
|
msgstr "是否删除录像?"
|
||||||
|
|
||||||
@ -1104,6 +1104,12 @@ msgstr "显示回放模式"
|
|||||||
msgid "Setup.Replay$Show remaining time"
|
msgid "Setup.Replay$Show remaining time"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.Replay$Progress display time (s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.Replay$Pause replay when setting mark"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Setup.Replay$Resume ID"
|
msgid "Setup.Replay$Resume ID"
|
||||||
msgstr "恢复 ID"
|
msgstr "恢复 ID"
|
||||||
|
|
||||||
@ -1386,3 +1392,6 @@ msgstr "硬盘已使用"
|
|||||||
|
|
||||||
msgid "free"
|
msgid "free"
|
||||||
msgstr "可录像时间"
|
msgstr "可录像时间"
|
||||||
|
|
||||||
|
#~ msgid "Error while accessing recording!"
|
||||||
|
#~ msgstr "存取录像错误!"
|
||||||
|
28
recording.c
28
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.73 2012/11/13 13:46:49 kls Exp $
|
* $Id: recording.c 2.78 2012/12/06 09:35:13 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "recording.h"
|
#include "recording.h"
|
||||||
@ -455,7 +455,7 @@ bool cRecordingInfo::Read(FILE *f)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'F': framesPerSecond = atof(t);
|
case 'F': framesPerSecond = atod(t);
|
||||||
break;
|
break;
|
||||||
case 'L': lifetime = atoi(t);
|
case 'L': lifetime = atoi(t);
|
||||||
break;
|
break;
|
||||||
@ -482,7 +482,7 @@ bool cRecordingInfo::Write(FILE *f, const char *Prefix) const
|
|||||||
if (channelID.Valid())
|
if (channelID.Valid())
|
||||||
fprintf(f, "%sC %s%s%s\n", Prefix, *channelID.ToString(), channelName ? " " : "", channelName ? channelName : "");
|
fprintf(f, "%sC %s%s%s\n", Prefix, *channelID.ToString(), channelName ? " " : "", channelName ? channelName : "");
|
||||||
event->Dump(f, Prefix, true);
|
event->Dump(f, Prefix, true);
|
||||||
fprintf(f, "%sF %.10g\n", Prefix, framesPerSecond);
|
fprintf(f, "%sF %s\n", Prefix, *dtoa(framesPerSecond, "%.10g"));
|
||||||
fprintf(f, "%sP %d\n", Prefix, priority);
|
fprintf(f, "%sP %d\n", Prefix, priority);
|
||||||
fprintf(f, "%sL %d\n", Prefix, lifetime);
|
fprintf(f, "%sL %d\n", Prefix, lifetime);
|
||||||
if (aux)
|
if (aux)
|
||||||
@ -691,7 +691,8 @@ cRecording::cRecording(const char *FileName)
|
|||||||
FileName = fileName = strdup(FileName);
|
FileName = fileName = strdup(FileName);
|
||||||
if (*(fileName + strlen(fileName) - 1) == '/')
|
if (*(fileName + strlen(fileName) - 1) == '/')
|
||||||
*(fileName + strlen(fileName) - 1) = 0;
|
*(fileName + strlen(fileName) - 1) = 0;
|
||||||
FileName += strlen(VideoDirectory) + 1;
|
if (strstr(FileName, VideoDirectory) == FileName)
|
||||||
|
FileName += strlen(VideoDirectory) + 1;
|
||||||
const char *p = strrchr(FileName, '/');
|
const char *p = strrchr(FileName, '/');
|
||||||
|
|
||||||
name = NULL;
|
name = NULL;
|
||||||
@ -1498,8 +1499,11 @@ int cMarks::GetNumSequences(void)
|
|||||||
NumSequences++;
|
NumSequences++;
|
||||||
BeginMark = GetNextBegin(EndMark);
|
BeginMark = GetNextBegin(EndMark);
|
||||||
}
|
}
|
||||||
if (NumSequences == 0 && BeginMark->Position() > 0)
|
if (BeginMark) {
|
||||||
NumSequences = 1; // there is only one actual "begin" mark at a non-zero offset, and no actual "end" mark
|
NumSequences++; // the last sequence had no actual "end" mark
|
||||||
|
if (NumSequences == 1 && BeginMark->Position() == 0)
|
||||||
|
NumSequences = 0; // there is only one actual "begin" mark at offset zero, and no actual "end" mark
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return NumSequences;
|
return NumSequences;
|
||||||
}
|
}
|
||||||
@ -1606,7 +1610,7 @@ void cIndexFileGenerator::Action(void)
|
|||||||
int Pid = TsPid(p);
|
int Pid = TsPid(p);
|
||||||
if (Pid == PATPID)
|
if (Pid == PATPID)
|
||||||
PatPmtParser.ParsePat(p, TS_SIZE);
|
PatPmtParser.ParsePat(p, TS_SIZE);
|
||||||
else if (Pid == PatPmtParser.PmtPid())
|
else if (PatPmtParser.IsPmtPid(Pid))
|
||||||
PatPmtParser.ParsePmt(p, TS_SIZE);
|
PatPmtParser.ParsePmt(p, TS_SIZE);
|
||||||
Length -= TS_SIZE;
|
Length -= TS_SIZE;
|
||||||
p += TS_SIZE;
|
p += TS_SIZE;
|
||||||
@ -1639,6 +1643,14 @@ void cIndexFileGenerator::Action(void)
|
|||||||
}
|
}
|
||||||
if (IndexFileComplete) {
|
if (IndexFileComplete) {
|
||||||
if (IndexFileWritten) {
|
if (IndexFileWritten) {
|
||||||
|
cRecordingInfo RecordingInfo(recordingName);
|
||||||
|
if (RecordingInfo.Read()) {
|
||||||
|
if (FrameDetector.FramesPerSecond() > 0 && !DoubleEqual(RecordingInfo.FramesPerSecond(), FrameDetector.FramesPerSecond())) {
|
||||||
|
RecordingInfo.SetFramesPerSecond(FrameDetector.FramesPerSecond());
|
||||||
|
RecordingInfo.Write();
|
||||||
|
Recordings.UpdateByName(recordingName);
|
||||||
|
}
|
||||||
|
}
|
||||||
Skins.QueueMessage(mtInfo, tr("Index file regeneration complete"));
|
Skins.QueueMessage(mtInfo, tr("Index file regeneration complete"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -2132,7 +2144,7 @@ bool cFileName::GetLastPatPmtVersions(int &PatVersion, int &PmtVersion)
|
|||||||
int Pid = TsPid(buf);
|
int Pid = TsPid(buf);
|
||||||
if (Pid == PATPID)
|
if (Pid == PATPID)
|
||||||
PatPmtParser.ParsePat(buf, sizeof(buf));
|
PatPmtParser.ParsePat(buf, sizeof(buf));
|
||||||
else if (Pid == PatPmtParser.PmtPid()) {
|
else if (PatPmtParser.IsPmtPid(Pid)) {
|
||||||
PatPmtParser.ParsePmt(buf, sizeof(buf));
|
PatPmtParser.ParsePmt(buf, sizeof(buf));
|
||||||
if (PatPmtParser.GetVersions(PatVersion, PmtVersion)) {
|
if (PatPmtParser.GetVersions(PatVersion, PmtVersion)) {
|
||||||
close(fd);
|
close(fd);
|
||||||
|
45
remux.c
45
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.71 2012/11/18 12:18:08 kls Exp $
|
* $Id: remux.c 2.73 2012/11/25 14:16:11 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "remux.h"
|
#include "remux.h"
|
||||||
@ -574,7 +574,7 @@ void cPatPmtParser::Reset(void)
|
|||||||
{
|
{
|
||||||
pmtSize = 0;
|
pmtSize = 0;
|
||||||
patVersion = pmtVersion = -1;
|
patVersion = pmtVersion = -1;
|
||||||
pmtPid = -1;
|
pmtPids[0] = 0;
|
||||||
vpid = vtype = 0;
|
vpid = vtype = 0;
|
||||||
ppid = 0;
|
ppid = 0;
|
||||||
}
|
}
|
||||||
@ -594,14 +594,17 @@ void cPatPmtParser::ParsePat(const uchar *Data, int Length)
|
|||||||
dbgpatpmt("PAT: TSid = %d, c/n = %d, v = %d, s = %d, ls = %d\n", Pat.getTransportStreamId(), Pat.getCurrentNextIndicator(), Pat.getVersionNumber(), Pat.getSectionNumber(), Pat.getLastSectionNumber());
|
dbgpatpmt("PAT: TSid = %d, c/n = %d, v = %d, s = %d, ls = %d\n", Pat.getTransportStreamId(), Pat.getCurrentNextIndicator(), Pat.getVersionNumber(), Pat.getSectionNumber(), Pat.getLastSectionNumber());
|
||||||
if (patVersion == Pat.getVersionNumber())
|
if (patVersion == Pat.getVersionNumber())
|
||||||
return;
|
return;
|
||||||
|
int NumPmtPids = 0;
|
||||||
SI::PAT::Association assoc;
|
SI::PAT::Association assoc;
|
||||||
for (SI::Loop::Iterator it; Pat.associationLoop.getNext(assoc, it); ) {
|
for (SI::Loop::Iterator it; Pat.associationLoop.getNext(assoc, it); ) {
|
||||||
dbgpatpmt(" isNITPid = %d\n", assoc.isNITPid());
|
dbgpatpmt(" isNITPid = %d\n", assoc.isNITPid());
|
||||||
if (!assoc.isNITPid()) {
|
if (!assoc.isNITPid()) {
|
||||||
pmtPid = assoc.getPid();
|
if (NumPmtPids <= MAX_PMT_PIDS)
|
||||||
|
pmtPids[NumPmtPids++] = assoc.getPid();
|
||||||
dbgpatpmt(" service id = %d, pid = %d\n", assoc.getServiceId(), assoc.getPid());
|
dbgpatpmt(" service id = %d, pid = %d\n", assoc.getServiceId(), assoc.getPid());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
pmtPids[NumPmtPids] = 0;
|
||||||
patVersion = Pat.getVersionNumber();
|
patVersion = Pat.getVersionNumber();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -673,7 +676,7 @@ void cPatPmtParser::ParsePmt(const uchar *Data, int Length)
|
|||||||
switch (stream.getStreamType()) {
|
switch (stream.getStreamType()) {
|
||||||
case 0x01: // STREAMTYPE_11172_VIDEO
|
case 0x01: // STREAMTYPE_11172_VIDEO
|
||||||
case 0x02: // STREAMTYPE_13818_VIDEO
|
case 0x02: // STREAMTYPE_13818_VIDEO
|
||||||
case 0x1B: // MPEG4
|
case 0x1B: // H.264
|
||||||
vpid = stream.getPid();
|
vpid = stream.getPid();
|
||||||
vtype = stream.getStreamType();
|
vtype = stream.getStreamType();
|
||||||
ppid = Pmt.getPCRPid();
|
ppid = Pmt.getPCRPid();
|
||||||
@ -839,7 +842,7 @@ bool cPatPmtParser::ParsePatPmt(const uchar *Data, int Length)
|
|||||||
int Pid = TsPid(Data);
|
int Pid = TsPid(Data);
|
||||||
if (Pid == PATPID)
|
if (Pid == PATPID)
|
||||||
ParsePat(Data, TS_SIZE);
|
ParsePat(Data, TS_SIZE);
|
||||||
else if (Pid == PmtPid()) {
|
else if (IsPmtPid(Pid)) {
|
||||||
ParsePmt(Data, TS_SIZE);
|
ParsePmt(Data, TS_SIZE);
|
||||||
if (patVersion >= 0 && pmtVersion >= 0)
|
if (patVersion >= 0 && pmtVersion >= 0)
|
||||||
return true;
|
return true;
|
||||||
@ -1107,9 +1110,9 @@ int cMpeg2Parser::Parse(const uchar *Data, int Length, int Pid)
|
|||||||
return tsPayload.Used();
|
return tsPayload.Used();
|
||||||
}
|
}
|
||||||
|
|
||||||
// --- cMpeg4Parser ----------------------------------------------------------
|
// --- cH264Parser -----------------------------------------------------------
|
||||||
|
|
||||||
class cMpeg4Parser : public cFrameParser {
|
class cH264Parser : public cFrameParser {
|
||||||
private:
|
private:
|
||||||
enum eNalUnitType {
|
enum eNalUnitType {
|
||||||
nutCodedSliceNonIdr = 1,
|
nutCodedSliceNonIdr = 1,
|
||||||
@ -1141,14 +1144,14 @@ private:
|
|||||||
void ParseSequenceParameterSet(void);
|
void ParseSequenceParameterSet(void);
|
||||||
void ParseSliceHeader(void);
|
void ParseSliceHeader(void);
|
||||||
public:
|
public:
|
||||||
cMpeg4Parser(void);
|
cH264Parser(void);
|
||||||
///< Sets up a new MPEG-4 parser.
|
///< Sets up a new H.264 parser.
|
||||||
///< This class parses only the data absolutely necessary to determine the
|
///< This class parses only the data absolutely necessary to determine the
|
||||||
///< frame borders and field count of the given H264 material.
|
///< frame borders and field count of the given H264 material.
|
||||||
virtual int Parse(const uchar *Data, int Length, int Pid);
|
virtual int Parse(const uchar *Data, int Length, int Pid);
|
||||||
};
|
};
|
||||||
|
|
||||||
cMpeg4Parser::cMpeg4Parser(void)
|
cH264Parser::cH264Parser(void)
|
||||||
{
|
{
|
||||||
byte = 0;
|
byte = 0;
|
||||||
bit = -1;
|
bit = -1;
|
||||||
@ -1161,7 +1164,7 @@ cMpeg4Parser::cMpeg4Parser(void)
|
|||||||
gotSequenceParameterSet = false;
|
gotSequenceParameterSet = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
uchar cMpeg4Parser::GetByte(bool Raw)
|
uchar cH264Parser::GetByte(bool Raw)
|
||||||
{
|
{
|
||||||
uchar b = tsPayload.GetByte();
|
uchar b = tsPayload.GetByte();
|
||||||
if (!Raw) {
|
if (!Raw) {
|
||||||
@ -1180,7 +1183,7 @@ uchar cMpeg4Parser::GetByte(bool Raw)
|
|||||||
return b;
|
return b;
|
||||||
}
|
}
|
||||||
|
|
||||||
uchar cMpeg4Parser::GetBit(void)
|
uchar cH264Parser::GetBit(void)
|
||||||
{
|
{
|
||||||
if (bit < 0) {
|
if (bit < 0) {
|
||||||
byte = GetByte();
|
byte = GetByte();
|
||||||
@ -1189,7 +1192,7 @@ uchar cMpeg4Parser::GetBit(void)
|
|||||||
return (byte & (1 << bit--)) ? 1 : 0;
|
return (byte & (1 << bit--)) ? 1 : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t cMpeg4Parser::GetBits(int Bits)
|
uint32_t cH264Parser::GetBits(int Bits)
|
||||||
{
|
{
|
||||||
uint32_t b = 0;
|
uint32_t b = 0;
|
||||||
while (Bits--)
|
while (Bits--)
|
||||||
@ -1197,7 +1200,7 @@ uint32_t cMpeg4Parser::GetBits(int Bits)
|
|||||||
return b;
|
return b;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t cMpeg4Parser::GetGolombUe(void)
|
uint32_t cH264Parser::GetGolombUe(void)
|
||||||
{
|
{
|
||||||
int z = -1;
|
int z = -1;
|
||||||
for (int b = 0; !b; z++)
|
for (int b = 0; !b; z++)
|
||||||
@ -1205,7 +1208,7 @@ uint32_t cMpeg4Parser::GetGolombUe(void)
|
|||||||
return (1 << z) - 1 + GetBits(z);
|
return (1 << z) - 1 + GetBits(z);
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t cMpeg4Parser::GetGolombSe(void)
|
int32_t cH264Parser::GetGolombSe(void)
|
||||||
{
|
{
|
||||||
uint32_t v = GetGolombUe();
|
uint32_t v = GetGolombUe();
|
||||||
if (v) {
|
if (v) {
|
||||||
@ -1217,7 +1220,7 @@ int32_t cMpeg4Parser::GetGolombSe(void)
|
|||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
|
|
||||||
int cMpeg4Parser::Parse(const uchar *Data, int Length, int Pid)
|
int cH264Parser::Parse(const uchar *Data, int Length, int Pid)
|
||||||
{
|
{
|
||||||
newFrame = independentFrame = false;
|
newFrame = independentFrame = false;
|
||||||
tsPayload.Setup(const_cast<uchar *>(Data), Length, Pid);
|
tsPayload.Setup(const_cast<uchar *>(Data), Length, Pid);
|
||||||
@ -1257,14 +1260,14 @@ int cMpeg4Parser::Parse(const uchar *Data, int Length, int Pid)
|
|||||||
return tsPayload.Used();
|
return tsPayload.Used();
|
||||||
}
|
}
|
||||||
|
|
||||||
void cMpeg4Parser::ParseAccessUnitDelimiter(void)
|
void cH264Parser::ParseAccessUnitDelimiter(void)
|
||||||
{
|
{
|
||||||
if (debug && gotSequenceParameterSet)
|
if (debug && gotSequenceParameterSet)
|
||||||
dbgframes("A");
|
dbgframes("A");
|
||||||
GetByte(); // primary_pic_type
|
GetByte(); // primary_pic_type
|
||||||
}
|
}
|
||||||
|
|
||||||
void cMpeg4Parser::ParseSequenceParameterSet(void)
|
void cH264Parser::ParseSequenceParameterSet(void)
|
||||||
{
|
{
|
||||||
uchar profile_idc = GetByte(); // profile_idc
|
uchar profile_idc = GetByte(); // profile_idc
|
||||||
GetByte(); // constraint_set[0-5]_flags, reserved_zero_2bits
|
GetByte(); // constraint_set[0-5]_flags, reserved_zero_2bits
|
||||||
@ -1316,7 +1319,7 @@ void cMpeg4Parser::ParseSequenceParameterSet(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void cMpeg4Parser::ParseSliceHeader(void)
|
void cH264Parser::ParseSliceHeader(void)
|
||||||
{
|
{
|
||||||
newFrame = true;
|
newFrame = true;
|
||||||
GetGolombUe(); // first_mb_in_slice
|
GetGolombUe(); // first_mb_in_slice
|
||||||
@ -1366,13 +1369,13 @@ void cFrameDetector::SetPid(int Pid, int Type)
|
|||||||
{
|
{
|
||||||
pid = Pid;
|
pid = Pid;
|
||||||
type = Type;
|
type = Type;
|
||||||
isVideo = type == 0x01 || type == 0x02 || type == 0x1B; // MPEG 1, 2 or 4
|
isVideo = type == 0x01 || type == 0x02 || type == 0x1B; // MPEG 1, 2 or H.264
|
||||||
delete parser;
|
delete parser;
|
||||||
parser = NULL;
|
parser = NULL;
|
||||||
if (type == 0x01 || type == 0x02)
|
if (type == 0x01 || type == 0x02)
|
||||||
parser = new cMpeg2Parser;
|
parser = new cMpeg2Parser;
|
||||||
else if (type == 0x1B)
|
else if (type == 0x1B)
|
||||||
parser = new cMpeg4Parser;
|
parser = new cH264Parser;
|
||||||
else if (type == 0x04 || type == 0x06) // MPEG audio or AC3 audio
|
else if (type == 0x04 || type == 0x06) // MPEG audio or AC3 audio
|
||||||
parser = new cAudioParser;
|
parser = new cAudioParser;
|
||||||
else if (type != 0)
|
else if (type != 0)
|
||||||
|
12
remux.h
12
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.35 2012/11/18 12:17:23 kls Exp $
|
* $Id: remux.h 2.36 2012/11/19 10:22:28 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __REMUX_H
|
#ifndef __REMUX_H
|
||||||
@ -327,13 +327,15 @@ public:
|
|||||||
|
|
||||||
// PAT/PMT Parser:
|
// PAT/PMT Parser:
|
||||||
|
|
||||||
|
#define MAX_PMT_PIDS 32
|
||||||
|
|
||||||
class cPatPmtParser {
|
class cPatPmtParser {
|
||||||
private:
|
private:
|
||||||
uchar pmt[MAX_SECTION_SIZE];
|
uchar pmt[MAX_SECTION_SIZE];
|
||||||
int pmtSize;
|
int pmtSize;
|
||||||
int patVersion;
|
int patVersion;
|
||||||
int pmtVersion;
|
int pmtVersion;
|
||||||
int pmtPid;
|
int pmtPids[MAX_PMT_PIDS + 1]; // list is zero-terminated
|
||||||
int vpid;
|
int vpid;
|
||||||
int ppid;
|
int ppid;
|
||||||
int vtype;
|
int vtype;
|
||||||
@ -373,9 +375,9 @@ public:
|
|||||||
bool GetVersions(int &PatVersion, int &PmtVersion) const;
|
bool GetVersions(int &PatVersion, int &PmtVersion) const;
|
||||||
///< Returns true if a valid PAT/PMT has been parsed and stores
|
///< Returns true if a valid PAT/PMT has been parsed and stores
|
||||||
///< the current version numbers in the given variables.
|
///< the current version numbers in the given variables.
|
||||||
int PmtPid(void) const { return pmtPid; }
|
bool IsPmtPid(int Pid) const { for (int i = 0; pmtPids[i]; i++) if (pmtPids[i] == Pid) return true; return false; }
|
||||||
///< Returns the PMT pid as defined by the current PAT.
|
///< Returns true if Pid the one of the PMT pids as defined by the current PAT.
|
||||||
///< If no PAT has been received yet, -1 will be returned.
|
///< If no PAT has been received yet, false will be returned.
|
||||||
int Vpid(void) const { return vpid; }
|
int Vpid(void) const { return vpid; }
|
||||||
///< Returns the video pid as defined by the current PMT, or 0 if no video
|
///< Returns the video pid as defined by the current PMT, or 0 if no video
|
||||||
///< pid has been detected, yet.
|
///< pid has been detected, yet.
|
||||||
|
49
skins.h
49
skins.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: skins.h 2.5 2012/05/12 11:10:30 kls Exp $
|
* $Id: skins.h 2.7 2012/12/07 17:18:44 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __SKINS_H
|
#ifndef __SKINS_H
|
||||||
@ -17,6 +17,7 @@
|
|||||||
#include "recording.h"
|
#include "recording.h"
|
||||||
#include "themes.h"
|
#include "themes.h"
|
||||||
#include "thread.h"
|
#include "thread.h"
|
||||||
|
#include "timers.h"
|
||||||
#include "tools.h"
|
#include "tools.h"
|
||||||
|
|
||||||
enum eMessageType { mtStatus = 0, mtInfo, mtWarning, mtError }; // will be used to calculate color offsets!
|
enum eMessageType { mtStatus = 0, mtInfo, mtWarning, mtError }; // will be used to calculate color offsets!
|
||||||
@ -49,7 +50,7 @@ public:
|
|||||||
|
|
||||||
class cSkinDisplayChannel : public cSkinDisplay {
|
class cSkinDisplayChannel : public cSkinDisplay {
|
||||||
///< This class is used to display the current channel, together with
|
///< This class is used to display the current channel, together with
|
||||||
///< the present and following EPG even. How and to what extent this
|
///< the present and following EPG event. How and to what extent this
|
||||||
///< is done is totally up to the derived class.
|
///< is done is totally up to the derived class.
|
||||||
public:
|
public:
|
||||||
virtual void SetChannel(const cChannel *Channel, int Number) = 0;
|
virtual void SetChannel(const cChannel *Channel, int Number) = 0;
|
||||||
@ -152,13 +153,43 @@ public:
|
|||||||
///< this function will be first called for the old current item
|
///< this function will be first called for the old current item
|
||||||
///< with Current set to false, and then for the new current item
|
///< with Current set to false, and then for the new current item
|
||||||
///< with Current set to true.
|
///< with Current set to true.
|
||||||
/*TODO
|
virtual bool SetItemEvent(const cEvent *Event, int Index, bool Current, bool Selectable, const cChannel *Channel, bool WithDate, int TimerMatch) { return false; }
|
||||||
virtual void SetItem(const cEvent *Event, int Index, bool Current, bool Selectable, bool NowNext???, bool Schedule???);
|
///< Sets the item at the given Index to Event. See SetItem() for more information.
|
||||||
virtual void SetItem(const cTimer *Timer, int Index, bool Current, bool Selectable);
|
///< If a derived skin class implements this function, it can display an Event item
|
||||||
virtual void SetItem(const cChannel *Channel, int Index, bool Current, bool Selectable);
|
///< in a more elaborate way than just a simple line of text.
|
||||||
virtual void SetItem(const cRecording *Recording, int Index, bool Current, bool Selectable);
|
///< If Channel is not NULL, the channel's name and/or number shall be displayed.
|
||||||
--> false: call SetItem(text)
|
///< If WithDate is true, the date of the Event shall be displayed (in addition to the time).
|
||||||
*/
|
///< TimerMatch tells how much of this event will be recorded by a timer.
|
||||||
|
///< If the skin displays the Event item in its own way, it shall return true.
|
||||||
|
///< The default implementation does nothing and returns false, which results in
|
||||||
|
///< a call to SetItem() with a proper text.
|
||||||
|
virtual bool SetItemTimer(const cTimer *Timer, int Index, bool Current, bool Selectable) { return false; }
|
||||||
|
///< Sets the item at the given Index to Timer. See SetItem() for more information.
|
||||||
|
///< If a derived skin class implements this function, it can display a Timer item
|
||||||
|
///< in a more elaborate way than just a simple line of text.
|
||||||
|
///< If the skin displays the Timer item in its own way, it shall return true.
|
||||||
|
///< The default implementation does nothing and returns false, which results in
|
||||||
|
///< a call to SetItem() with a proper text.
|
||||||
|
virtual bool SetItemChannel(const cChannel *Channel, int Index, bool Current, bool Selectable, bool WithProvider) { return false; }
|
||||||
|
///< Sets the item at the given Index to Channel. See SetItem() for more information.
|
||||||
|
///< If a derived skin class implements this function, it can display a Channel item
|
||||||
|
///< in a more elaborate way than just a simple line of text.
|
||||||
|
///< If WithProvider ist true, the provider shall be displayed in addition to the
|
||||||
|
///< channel's name.
|
||||||
|
///< If the skin displays the Channel item in its own way, it shall return true.
|
||||||
|
///< The default implementation does nothing and returns false, which results in
|
||||||
|
///< a call to SetItem() with a proper text.
|
||||||
|
virtual bool SetItemRecording(const cRecording *Recording, int Index, bool Current, bool Selectable, int Level, int Total, int New) { return false; }
|
||||||
|
///< Sets the item at the given Index to Recording. See SetItem() for more information.
|
||||||
|
///< If a derived skin class implements this function, it can display a Recording item
|
||||||
|
///< in a more elaborate way than just a simple line of text.
|
||||||
|
///< Level is the currently displayed level of the video directory, where 0 is the
|
||||||
|
///< top level. A value of -1 means that the full path names of the recordings
|
||||||
|
///< shall be displayed. If Total is greater than 0, this is a directory with the given
|
||||||
|
///< total number of entries, and New contains the number of new (unwatched) recordings.
|
||||||
|
///< If the skin displays the Recording item in its own way, it shall return true.
|
||||||
|
///< The default implementation does nothing and returns false, which results in
|
||||||
|
///< a call to SetItem() with a proper text.
|
||||||
virtual void SetScrollbar(int Total, int Offset);
|
virtual void SetScrollbar(int Total, int Offset);
|
||||||
///< Sets the Total number of items in the currently displayed list, and the
|
///< Sets the Total number of items in the currently displayed list, and the
|
||||||
///< Offset of the first item that is currently displayed (the skin knows how
|
///< Offset of the first item that is currently displayed (the skin knows how
|
||||||
|
8
svdrp.c
8
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.19 2012/05/12 11:55:18 kls Exp $
|
* $Id: svdrp.c 2.21 2012/12/04 12:08:36 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "svdrp.h"
|
#include "svdrp.h"
|
||||||
@ -917,6 +917,10 @@ void cSVDRP::CmdHELP(const char *Option)
|
|||||||
void cSVDRP::CmdHITK(const char *Option)
|
void cSVDRP::CmdHITK(const char *Option)
|
||||||
{
|
{
|
||||||
if (*Option) {
|
if (*Option) {
|
||||||
|
if (!cRemote::Enabled()) {
|
||||||
|
Reply(550, "Remote control currently disabled (key \"%s\" discarded)", Option);
|
||||||
|
return;
|
||||||
|
}
|
||||||
char buf[strlen(Option) + 1];
|
char buf[strlen(Option) + 1];
|
||||||
strcpy(buf, Option);
|
strcpy(buf, Option);
|
||||||
const char *delim = " \t";
|
const char *delim = " \t";
|
||||||
@ -1268,7 +1272,7 @@ void cSVDRP::CmdMOVC(const char *Option)
|
|||||||
Reply(250,"Channel \"%d\" moved to \"%d\"", From, To);
|
Reply(250,"Channel \"%d\" moved to \"%d\"", From, To);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
Reply(501, "Can't move channel to same postion");
|
Reply(501, "Can't move channel to same position");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
Reply(501, "Channel \"%d\" not defined", To);
|
Reply(501, "Channel \"%d\" not defined", To);
|
||||||
|
10
timers.c
10
timers.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: timers.c 2.14 2012/10/16 08:22:39 kls Exp $
|
* $Id: timers.c 2.15 2012/12/07 13:14:00 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "timers.h"
|
#include "timers.h"
|
||||||
@ -480,7 +480,7 @@ bool cTimer::Matches(time_t t, bool Directly, int Margin) const
|
|||||||
|
|
||||||
#define FULLMATCH 1000
|
#define FULLMATCH 1000
|
||||||
|
|
||||||
int cTimer::Matches(const cEvent *Event, int *Overlap) const
|
eTimerMatch cTimer::Matches(const cEvent *Event, int *Overlap) const
|
||||||
{
|
{
|
||||||
// Overlap is the percentage of the Event's duration that is covered by
|
// Overlap is the percentage of the Event's duration that is covered by
|
||||||
// this timer (based on FULLMATCH for finer granularity than just 100).
|
// this timer (based on FULLMATCH for finer granularity than just 100).
|
||||||
@ -758,12 +758,12 @@ cTimer *cTimers::GetMatch(time_t t)
|
|||||||
return t0;
|
return t0;
|
||||||
}
|
}
|
||||||
|
|
||||||
cTimer *cTimers::GetMatch(const cEvent *Event, int *Match)
|
cTimer *cTimers::GetMatch(const cEvent *Event, eTimerMatch *Match)
|
||||||
{
|
{
|
||||||
cTimer *t = NULL;
|
cTimer *t = NULL;
|
||||||
int m = tmNone;
|
eTimerMatch m = tmNone;
|
||||||
for (cTimer *ti = First(); ti; ti = Next(ti)) {
|
for (cTimer *ti = First(); ti; ti = Next(ti)) {
|
||||||
int tm = ti->Matches(Event);
|
eTimerMatch tm = ti->Matches(Event);
|
||||||
if (tm > m) {
|
if (tm > m) {
|
||||||
t = ti;
|
t = ti;
|
||||||
m = tm;
|
m = tm;
|
||||||
|
6
timers.h
6
timers.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: timers.h 2.4 2012/04/15 13:21:31 kls Exp $
|
* $Id: timers.h 2.5 2012/12/07 13:13:40 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __TIMERS_H
|
#ifndef __TIMERS_H
|
||||||
@ -77,7 +77,7 @@ public:
|
|||||||
static time_t SetTime(time_t t, int SecondsFromMidnight);
|
static time_t SetTime(time_t t, int SecondsFromMidnight);
|
||||||
void SetFile(const char *File);
|
void SetFile(const char *File);
|
||||||
bool Matches(time_t t = 0, bool Directly = false, int Margin = 0) const;
|
bool Matches(time_t t = 0, bool Directly = false, int Margin = 0) const;
|
||||||
int Matches(const cEvent *Event, int *Overlap = NULL) const;
|
eTimerMatch Matches(const cEvent *Event, int *Overlap = NULL) const;
|
||||||
bool Expired(void) const;
|
bool Expired(void) const;
|
||||||
time_t StartTime(void) const;
|
time_t StartTime(void) const;
|
||||||
time_t StopTime(void) const;
|
time_t StopTime(void) const;
|
||||||
@ -116,7 +116,7 @@ public:
|
|||||||
cTimers(void);
|
cTimers(void);
|
||||||
cTimer *GetTimer(cTimer *Timer);
|
cTimer *GetTimer(cTimer *Timer);
|
||||||
cTimer *GetMatch(time_t t);
|
cTimer *GetMatch(time_t t);
|
||||||
cTimer *GetMatch(const cEvent *Event, int *Match = NULL);
|
cTimer *GetMatch(const cEvent *Event, eTimerMatch *Match = NULL);
|
||||||
cTimer *GetNextActiveTimer(void);
|
cTimer *GetNextActiveTimer(void);
|
||||||
int BeingEdited(void) { return beingEdited; }
|
int BeingEdited(void) { return beingEdited; }
|
||||||
void IncBeingEdited(void) { beingEdited++; }
|
void IncBeingEdited(void) { beingEdited++; }
|
||||||
|
39
tools.c
39
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.26 2012/09/30 13:04:14 kls Exp $
|
* $Id: tools.c 2.29 2012/12/08 11:16:30 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "tools.h"
|
#include "tools.h"
|
||||||
@ -18,6 +18,7 @@ extern "C" {
|
|||||||
#include <jpeglib.h>
|
#include <jpeglib.h>
|
||||||
#undef boolean
|
#undef boolean
|
||||||
}
|
}
|
||||||
|
#include <locale.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <sys/time.h>
|
#include <sys/time.h>
|
||||||
#include <sys/vfs.h>
|
#include <sys/vfs.h>
|
||||||
@ -302,6 +303,39 @@ cString AddDirectory(const char *DirName, const char *FileName)
|
|||||||
return cString::sprintf("%s/%s", DirName && *DirName ? DirName : ".", FileName);
|
return cString::sprintf("%s/%s", DirName && *DirName ? DirName : ".", FileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define DECIMAL_POINT_C '.'
|
||||||
|
|
||||||
|
double atod(const char *s)
|
||||||
|
{
|
||||||
|
static lconv *loc = localeconv();
|
||||||
|
if (*loc->decimal_point != DECIMAL_POINT_C) {
|
||||||
|
char buf[strlen(s) + 1];
|
||||||
|
char *p = buf;
|
||||||
|
while (*s) {
|
||||||
|
if (*s == DECIMAL_POINT_C)
|
||||||
|
*p = *loc->decimal_point;
|
||||||
|
else
|
||||||
|
*p = *s;
|
||||||
|
p++;
|
||||||
|
s++;
|
||||||
|
}
|
||||||
|
*p = 0;
|
||||||
|
return atof(buf);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return atof(s);
|
||||||
|
}
|
||||||
|
|
||||||
|
cString dtoa(double d, const char *Format)
|
||||||
|
{
|
||||||
|
static lconv *loc = localeconv();
|
||||||
|
char buf[16];
|
||||||
|
snprintf(buf, sizeof(buf), Format, d);
|
||||||
|
if (*loc->decimal_point != DECIMAL_POINT_C)
|
||||||
|
strreplace(buf, *loc->decimal_point, DECIMAL_POINT_C);
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
|
||||||
cString itoa(int n)
|
cString itoa(int n)
|
||||||
{
|
{
|
||||||
char buf[16];
|
char buf[16];
|
||||||
@ -842,7 +876,8 @@ cCharSetConv::cCharSetConv(const char *FromCode, const char *ToCode)
|
|||||||
cCharSetConv::~cCharSetConv()
|
cCharSetConv::~cCharSetConv()
|
||||||
{
|
{
|
||||||
free(result);
|
free(result);
|
||||||
iconv_close(cd);
|
if (cd != (iconv_t)-1)
|
||||||
|
iconv_close(cd);
|
||||||
}
|
}
|
||||||
|
|
||||||
void cCharSetConv::SetSystemCharacterTable(const char *CharacterTable)
|
void cCharSetConv::SetSystemCharacterTable(const char *CharacterTable)
|
||||||
|
10
tools.h
10
tools.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: tools.h 2.22 2012/09/30 11:02:21 kls Exp $
|
* $Id: tools.h 2.23 2012/12/06 08:59:39 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __TOOLS_H
|
#ifndef __TOOLS_H
|
||||||
@ -216,6 +216,14 @@ int64_t StrToNum(const char *s);
|
|||||||
bool StrInArray(const char *a[], const char *s);
|
bool StrInArray(const char *a[], const char *s);
|
||||||
///< Returns true if the string s is equal to one of the strings pointed
|
///< Returns true if the string s is equal to one of the strings pointed
|
||||||
///< to by the (NULL terminated) array a.
|
///< to by the (NULL terminated) array a.
|
||||||
|
double atod(const char *s);
|
||||||
|
///< Converts the given string, which is a floating point number using a '.' as
|
||||||
|
///< the decimal point, to a double value, independent of the currently selected
|
||||||
|
///< locale.
|
||||||
|
cString dtoa(double d, const char *Format = "%f");
|
||||||
|
///< Converts the given double value to a string, making sure it uses a '.' as
|
||||||
|
///< the decimal point, independent of the currently selected locale.
|
||||||
|
///< If Format is given, it will be used instead of the default.
|
||||||
cString itoa(int n);
|
cString itoa(int n);
|
||||||
cString AddDirectory(const char *DirName, const char *FileName);
|
cString AddDirectory(const char *DirName, const char *FileName);
|
||||||
bool EntriesOnSameFileSystem(const char *File1, const char *File2);
|
bool EntriesOnSameFileSystem(const char *File1, const char *File2);
|
||||||
|
8
vdr.c
8
vdr.c
@ -22,7 +22,7 @@
|
|||||||
*
|
*
|
||||||
* The project's page is at http://www.tvdr.de
|
* The project's page is at http://www.tvdr.de
|
||||||
*
|
*
|
||||||
* $Id: vdr.c 2.42 2012/10/13 12:48:56 kls Exp $
|
* $Id: vdr.c 2.45 2012/12/06 10:29:23 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <getopt.h>
|
#include <getopt.h>
|
||||||
@ -174,7 +174,6 @@ int main(int argc, char *argv[])
|
|||||||
// Initiate locale:
|
// Initiate locale:
|
||||||
|
|
||||||
setlocale(LC_ALL, "");
|
setlocale(LC_ALL, "");
|
||||||
setlocale(LC_NUMERIC, "C"); // makes sure any floating point numbers written use a decimal point
|
|
||||||
|
|
||||||
// Command line options:
|
// Command line options:
|
||||||
|
|
||||||
@ -1000,11 +999,11 @@ int main(int argc, char *argv[])
|
|||||||
break;
|
break;
|
||||||
// Direct main menu functions:
|
// Direct main menu functions:
|
||||||
#define DirectMainFunction(function)\
|
#define DirectMainFunction(function)\
|
||||||
DELETE_MENU;\
|
{ DELETE_MENU;\
|
||||||
if (cControl::Control())\
|
if (cControl::Control())\
|
||||||
cControl::Control()->Hide();\
|
cControl::Control()->Hide();\
|
||||||
Menu = new cMenuMain(function);\
|
Menu = new cMenuMain(function);\
|
||||||
key = kNone; // nobody else needs to see this key
|
key = kNone; } // nobody else needs to see this key
|
||||||
case kSchedule: DirectMainFunction(osSchedule); break;
|
case kSchedule: DirectMainFunction(osSchedule); break;
|
||||||
case kChannels: DirectMainFunction(osChannels); break;
|
case kChannels: DirectMainFunction(osChannels); break;
|
||||||
case kTimers: DirectMainFunction(osTimers); break;
|
case kTimers: DirectMainFunction(osTimers); break;
|
||||||
@ -1089,6 +1088,7 @@ int main(int argc, char *argv[])
|
|||||||
key = kNone;
|
key = kNone;
|
||||||
break;
|
break;
|
||||||
// Pausing live video:
|
// Pausing live video:
|
||||||
|
case kPlayPause:
|
||||||
case kPause:
|
case kPause:
|
||||||
if (!cControl::Control()) {
|
if (!cControl::Control()) {
|
||||||
DELETE_MENU;
|
DELETE_MENU;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user