mirror of
https://github.com/vdr-projects/vdr.git
synced 2025-03-01 10:50:46 +00:00
Version 2.1.6
VDR developer version 2.1.6 is now available at ftp://ftp.tvdr.de/vdr/Developer/vdr-2.1.6.tar.bz2 A 'diff' against the previous version is available at ftp://ftp.tvdr.de/vdr/Developer/vdr-2.1.5-2.1.6.diff MD5 checksums: 79519dac59166fabc2029b916bd61d00 vdr-2.1.6.tar.bz2 99f2f7094a242462696c0da5e52bb4c3 vdr-2.1.5-2.1.6.diff WARNING: ======== This is a *developer* version. Even though *I* use it in my productive environment, I strongly recommend that you only use it under controlled conditions and for testing and debugging. From the HISTORY file: - Revoked "Fixed some compiler warnings with Clang 3.4.1" from ci.c, because this did not compile with older versions of gcc (thanks to Sören Moch). - Fixed keeping the current position in the Recordings menu if a recording was deleted in a sub folder. - Fixed handling transfer mode on full featured DVB cards for encrypted channels that have no audio pid (reported by Christian Winkler). - Fixed a possible endless loop in cH264Parser::GetGolombUe(), which caused recordings on some HD channels to get stuck and resulted in buffer overflows. - Fixed handling PAT packets when detecting frames, so that they can be properly taken into account when regenerating the index of a recording. - Fixed adding new source types in case they are already registered (reported by Rolf Ahrenberg). - Removed an unnecessary assignment from cMenuRecordings::~cMenuRecordings(). - The Recordings menu now remembers the last recording the cursor was positioned on, independent of the last replayed recording. When a replay ends, however, the cursor will initially be positioned to the last replayed recording again when the menu is opened. - Updated the Finnish OSD texts (thanks to Antti Hartikainen). - Fixed drawing the live indicator in the LCARS skin in case there are no devices. - When checking for obsolete channels, those with an RID that is not 0 are now ignored (suggested by Oliver Endriss). - The SDT is now only parsed *after* the NIT has been read, and it explicitly uses the source value derived from the NIT. This should prevent new channels from being created with the wrong source. - Added a log message in case a receiver is detached from its device because the assigned CAM can't decrypt the channel. - Refactored setup parameter handling for output devices: + The function cDevice::GetVideoSystem() has been deprecated and will be removed in a future version. In order to check whether a particular plugin needs to be modified if this function is removed, you can comment out the line #define DEPRECATED_VIDEOSYSTEM in device.h. + Handling the "video (display) format" (things like 16:9, 4:3, pan&scan, letterbox etc) shall now be done by the individual output devices, because the types and numbers of parameters are too device specific. The Setup/DVB parameters "Video format" and "Video display format" are still there for now and can be used by SD devices. HD devices, however, shall not use these parameters (any more), but rather implement their own setup menu with the necessary parameters for controlling output. + The dvbhdffdevice plugin has been modified accordingly. + Made it clear that cDevice::SetDigitalAudioDevice() merely tells the output device that the current audio track is Dolby Digital. This function was only used by the original "full featured" DVB cards - do not use it for new developments! If an output device has several ways of replaying audio (like HDMI or analog jack) it shall implement the proper options in its plugin's SetupMenu() function. - Added support for "Pilot", "T2-System-Id" and "SISO/MISO" parameters (thanks to Rolf Ahrenberg). - Now initializing the isOnVideoDirectoryFileSystem member of cRecording when scanning the video directory, so that it won't cause a delay when opening the menu on a system with a large number of recordings. - Now resetting the isOnVideoDirectoryFileSystem member of a cRecording to -1 after renaming it, so that it will be re-checked upon the next call to IsOnVideoDirectoryFileSystem(). - Added support for systemd (thanks to Christopher Reimer). To activate this you need to add "SDNOTIFY=1" to the 'make' call.
This commit is contained in:
parent
797dc7d1a1
commit
3e4e4454fc
15
CONTRIBUTORS
15
CONTRIBUTORS
@ -709,6 +709,8 @@ Oliver Endriss <o.endriss@gmx.de>
|
|||||||
for suggesting to eliminate MAXDVBDEVICES
|
for suggesting to eliminate MAXDVBDEVICES
|
||||||
for reporting that there are channels that need even more than 10 TS packets in order
|
for reporting that there are channels that need even more than 10 TS packets in order
|
||||||
to detect the frame type
|
to detect the frame type
|
||||||
|
for suggesting to ignore channels with an RID that is not 0 when checking for obsolete
|
||||||
|
channels
|
||||||
|
|
||||||
Reinhard Walter Buchner <rw.buchner@freenet.de>
|
Reinhard Walter Buchner <rw.buchner@freenet.de>
|
||||||
for adding some satellites to 'sources.conf'
|
for adding some satellites to 'sources.conf'
|
||||||
@ -1183,6 +1185,9 @@ Rolf Ahrenberg <Rolf.Ahrenberg@sci.fi>
|
|||||||
existing edited version of a recording
|
existing edited version of a recording
|
||||||
for adding code for parsing LCN and AVC descriptors to libsi
|
for adding code for parsing LCN and AVC descriptors to libsi
|
||||||
for fixing clearing non-editable members in the channel editor
|
for fixing clearing non-editable members in the channel editor
|
||||||
|
for reporting a problem with adding new source types in case they are already
|
||||||
|
registered
|
||||||
|
for adding support for "Pilot", "T2-System-Id" and "SISO/MISO" parameters
|
||||||
|
|
||||||
Ralf Klueber <ralf.klueber@vodafone.com>
|
Ralf Klueber <ralf.klueber@vodafone.com>
|
||||||
for reporting a bug in cutting a recording if there is only a single editing mark
|
for reporting a bug in cutting a recording if there is only a single editing mark
|
||||||
@ -2515,6 +2520,7 @@ Antti Hartikainen <ami+vdr@ah.fi>
|
|||||||
for updating 'S13E' in 'sources.conf'
|
for updating 'S13E' in 'sources.conf'
|
||||||
for adding maximum SNR value for PCTV Systems nanoStick T2 290e
|
for adding maximum SNR value for PCTV Systems nanoStick T2 290e
|
||||||
for updating 'sources.conf'
|
for updating 'sources.conf'
|
||||||
|
for translating OSD texts to the Finnish language
|
||||||
|
|
||||||
Bernd Melcher <bernd@bernd-melcher.de>
|
Bernd Melcher <bernd@bernd-melcher.de>
|
||||||
for reporting a problem with the 'servicedemo' plugin having no PLUGIN macro
|
for reporting a problem with the 'servicedemo' plugin having no PLUGIN macro
|
||||||
@ -2917,7 +2923,7 @@ Luis Fernandes <telping@gmail.com>
|
|||||||
for suggesting to add handling MPEG audio type "ISO/IEC 14496-3 Audio with LATM
|
for suggesting to add handling MPEG audio type "ISO/IEC 14496-3 Audio with LATM
|
||||||
transport syntax"
|
transport syntax"
|
||||||
|
|
||||||
Christopher Reimer <reimer.christopher@freenet.de>
|
Christopher Reimer <vdr@creimer.net>
|
||||||
for reporting a problem with external Dolby Digital processing via the '-a' option
|
for reporting a problem with external Dolby Digital processing via the '-a' option
|
||||||
in live mode and with TS recordings
|
in live mode and with TS recordings
|
||||||
for contributing to a patch that implements FHS support
|
for contributing to a patch that implements FHS support
|
||||||
@ -2929,6 +2935,7 @@ Christopher Reimer <reimer.christopher@freenet.de>
|
|||||||
VDR source directory when doing "make plugins"
|
VDR source directory when doing "make plugins"
|
||||||
for reverting the change from version 1.5.7 that made all logging go to LOG_ERR
|
for reverting the change from version 1.5.7 that made all logging go to LOG_ERR
|
||||||
for reporting a possible crash in the OSD demo
|
for reporting a possible crash in the OSD demo
|
||||||
|
for adding support for systemd
|
||||||
|
|
||||||
Stefan Huskamp <coca_cola1@gmx.de>
|
Stefan Huskamp <coca_cola1@gmx.de>
|
||||||
for suggesting to make entering characters via the number keys
|
for suggesting to make entering characters via the number keys
|
||||||
@ -3141,6 +3148,8 @@ S
|
|||||||
for pointing out that FindHeader() can also be used in cMpeg2Fixer::AdjTref()
|
for pointing out that FindHeader() can also be used in cMpeg2Fixer::AdjTref()
|
||||||
for reporting a problem with detecting user inactivity in case the system time is
|
for reporting a problem with detecting user inactivity in case the system time is
|
||||||
changed after VDR has been started
|
changed after VDR has been started
|
||||||
|
for reporting that the change "Fixed some compiler warnings with Clang 3.4.1" caused
|
||||||
|
ci.c to no longer compile with older versions of gcc
|
||||||
|
|
||||||
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
|
||||||
@ -3271,3 +3280,7 @@ Tony Houghton <h@realh.co.uk>
|
|||||||
warning with Clang 3.4.1
|
warning with Clang 3.4.1
|
||||||
for suggesting to replace the NULL pointer assignment in ~cReceiver() to force a
|
for suggesting to replace the NULL pointer assignment in ~cReceiver() to force a
|
||||||
segfault with a call to abort()
|
segfault with a call to abort()
|
||||||
|
|
||||||
|
Christian Winkler <winkler_chr@yahoo.de>
|
||||||
|
for reporting a problem with transfer mode on full featured DVB cards for encrypted
|
||||||
|
channels that have no audio pid
|
||||||
|
58
HISTORY
58
HISTORY
@ -8202,3 +8202,61 @@ Video Disk Recorder Revision History
|
|||||||
- Fixed the replay progress display for very long recordings.
|
- Fixed the replay progress display for very long recordings.
|
||||||
- Fixed detecting broken video data streams when recording.
|
- Fixed detecting broken video data streams when recording.
|
||||||
- Fixed handling frame detection buffer length (reported by Eike Sauer).
|
- Fixed handling frame detection buffer length (reported by Eike Sauer).
|
||||||
|
|
||||||
|
2014-03-16: Version 2.1.6
|
||||||
|
|
||||||
|
- Revoked "Fixed some compiler warnings with Clang 3.4.1" from ci.c, because this
|
||||||
|
did not compile with older versions of gcc (thanks to Sören Moch).
|
||||||
|
- Fixed keeping the current position in the Recordings menu if a recording was
|
||||||
|
deleted in a sub folder.
|
||||||
|
- Fixed handling transfer mode on full featured DVB cards for encrypted channels
|
||||||
|
that have no audio pid (reported by Christian Winkler).
|
||||||
|
- Fixed a possible endless loop in cH264Parser::GetGolombUe(), which caused recordings
|
||||||
|
on some HD channels to get stuck and resulted in buffer overflows.
|
||||||
|
- Fixed handling PAT packets when detecting frames, so that they can be properly
|
||||||
|
taken into account when regenerating the index of a recording.
|
||||||
|
- Fixed adding new source types in case they are already registered (reported by Rolf
|
||||||
|
Ahrenberg).
|
||||||
|
- Removed an unnecessary assignment from cMenuRecordings::~cMenuRecordings().
|
||||||
|
- The Recordings menu now remembers the last recording the cursor was positioned on,
|
||||||
|
independent of the last replayed recording. When a replay ends, however, the cursor
|
||||||
|
will initially be positioned to the last replayed recording again when the menu
|
||||||
|
is opened.
|
||||||
|
- Updated the Finnish OSD texts (thanks to Antti Hartikainen).
|
||||||
|
- Fixed drawing the live indicator in the LCARS skin in case there are no devices.
|
||||||
|
- When checking for obsolete channels, those with an RID that is not 0 are now
|
||||||
|
ignored (suggested by Oliver Endriss).
|
||||||
|
- The SDT is now only parsed *after* the NIT has been read, and it explicitly uses
|
||||||
|
the source value derived from the NIT. This should prevent new channels from being
|
||||||
|
created with the wrong source.
|
||||||
|
- Added a log message in case a receiver is detached from its device because the
|
||||||
|
assigned CAM can't decrypt the channel.
|
||||||
|
- Refactored setup parameter handling for output devices:
|
||||||
|
+ The function cDevice::GetVideoSystem() has been deprecated and will be removed
|
||||||
|
in a future version. In order to check whether a particular plugin needs to be
|
||||||
|
modified if this function is removed, you can comment out the line
|
||||||
|
#define DEPRECATED_VIDEOSYSTEM
|
||||||
|
in device.h.
|
||||||
|
+ Handling the "video (display) format" (things like 16:9, 4:3, pan&scan, letterbox
|
||||||
|
etc) shall now be done by the individual output devices, because the types and
|
||||||
|
numbers of parameters are too device specific. The Setup/DVB parameters
|
||||||
|
"Video format" and "Video display format" are still there for now and can be used
|
||||||
|
by SD devices. HD devices, however, shall not use these parameters (any more),
|
||||||
|
but rather implement their own setup menu with the necessary parameters for
|
||||||
|
controlling output.
|
||||||
|
+ The dvbhdffdevice plugin has been modified accordingly.
|
||||||
|
+ Made it clear that cDevice::SetDigitalAudioDevice() merely tells the output device
|
||||||
|
that the current audio track is Dolby Digital. This function was only used by the
|
||||||
|
original "full featured" DVB cards - do not use it for new developments!
|
||||||
|
If an output device has several ways of replaying audio (like HDMI or analog jack)
|
||||||
|
it shall implement the proper options in its plugin's SetupMenu() function.
|
||||||
|
- Added support for "Pilot", "T2-System-Id" and "SISO/MISO" parameters (thanks to
|
||||||
|
Rolf Ahrenberg).
|
||||||
|
- Now initializing the isOnVideoDirectoryFileSystem member of cRecording when
|
||||||
|
scanning the video directory, so that it won't cause a delay when opening the menu
|
||||||
|
on a system with a large number of recordings.
|
||||||
|
- Now resetting the isOnVideoDirectoryFileSystem member of a cRecording to -1 after
|
||||||
|
renaming it, so that it will be re-checked upon the next call to
|
||||||
|
IsOnVideoDirectoryFileSystem().
|
||||||
|
- Added support for systemd (thanks to Christopher Reimer). To activate this you
|
||||||
|
need to add "SDNOTIFY=1" to the 'make' call.
|
||||||
|
4
MANUAL
4
MANUAL
@ -731,13 +731,13 @@ Version 2.0
|
|||||||
1 = ANSI/SCTE
|
1 = ANSI/SCTE
|
||||||
|
|
||||||
Video format = 4:3 The video format (or aspect ratio) of the tv set in use
|
Video format = 4:3 The video format (or aspect ratio) of the tv set in use
|
||||||
(4:3 or 16:9).
|
(4:3 or 16:9). Applies only to SD output devices.
|
||||||
|
|
||||||
Video display format = letterbox
|
Video display format = letterbox
|
||||||
The display format to use for playing wide screen video on
|
The display format to use for playing wide screen video on
|
||||||
a 4:3 tv set ("pan & scan", "letterbox" or "center cut out").
|
a 4:3 tv set ("pan & scan", "letterbox" or "center cut out").
|
||||||
This option is only available if "Video format" is set to
|
This option is only available if "Video format" is set to
|
||||||
4:3.
|
4:3. Applies only to SD output devices.
|
||||||
|
|
||||||
Use Dolby Digital = yes
|
Use Dolby Digital = yes
|
||||||
Controls whether Dolby Digital tracks appear in the "Audio"
|
Controls whether Dolby Digital tracks appear in the "Audio"
|
||||||
|
7
Makefile
7
Makefile
@ -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: Makefile 3.1 2013/04/14 12:18:08 kls Exp $
|
# $Id: Makefile 3.2 2014/03/16 12:47:35 kls Exp $
|
||||||
|
|
||||||
.DELETE_ON_ERROR:
|
.DELETE_ON_ERROR:
|
||||||
|
|
||||||
@ -93,6 +93,11 @@ INCLUDES += $(shell pkg-config --cflags fribidi)
|
|||||||
DEFINES += -DBIDI
|
DEFINES += -DBIDI
|
||||||
LIBS += $(shell pkg-config --libs fribidi)
|
LIBS += $(shell pkg-config --libs fribidi)
|
||||||
endif
|
endif
|
||||||
|
ifdef SDNOTIFY
|
||||||
|
INCLUDES += $(shell pkg-config --cflags libsystemd-daemon)
|
||||||
|
DEFINES += -DSDNOTIFY
|
||||||
|
LIBS += $(shell pkg-config --libs libsystemd-daemon)
|
||||||
|
endif
|
||||||
|
|
||||||
LIRC_DEVICE ?= /var/run/lirc/lircd
|
LIRC_DEVICE ?= /var/run/lirc/lircd
|
||||||
|
|
||||||
|
@ -93,3 +93,8 @@ VDR Plugin 'dvbhddevice' Revision History
|
|||||||
2014-01-17: Version 2.1.4
|
2014-01-17: Version 2.1.4
|
||||||
|
|
||||||
- Using PCR based clock recovery in transfer mode.
|
- Using PCR based clock recovery in transfer mode.
|
||||||
|
|
||||||
|
2014-03-15: Version 2.1.6
|
||||||
|
|
||||||
|
- The function cDevice::GetVideoSystem() has been deprecated.
|
||||||
|
- Removed old-style video format setting functions.
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
#include "menu.h"
|
#include "menu.h"
|
||||||
#include "setup.h"
|
#include "setup.h"
|
||||||
|
|
||||||
static const char *VERSION = "2.1.5";
|
static const char *VERSION = "2.1.6";
|
||||||
static const char *DESCRIPTION = trNOOP("HD Full Featured DVB device");
|
static const char *DESCRIPTION = trNOOP("HD Full Featured DVB device");
|
||||||
static const char *MAINMENUENTRY = "dvbhddevice";
|
static const char *MAINMENUENTRY = "dvbhddevice";
|
||||||
|
|
||||||
|
@ -108,8 +108,16 @@ cDvbHdFfDevice::~cDvbHdFfDevice()
|
|||||||
|
|
||||||
void cDvbHdFfDevice::MakePrimaryDevice(bool On)
|
void cDvbHdFfDevice::MakePrimaryDevice(bool On)
|
||||||
{
|
{
|
||||||
if (On)
|
if (On) {
|
||||||
new cHdffOsdProvider(mHdffCmdIf);
|
new cHdffOsdProvider(mHdffCmdIf);
|
||||||
|
//TODO the same code is also used in cHdffSetupPage::Store() and cHdffMenu::SetVideoConversion() - combine?
|
||||||
|
HdffVideoFormat_t videoFormat;
|
||||||
|
videoFormat.AutomaticEnabled = true;
|
||||||
|
videoFormat.AfdEnabled = false;
|
||||||
|
videoFormat.TvFormat = (HdffTvFormat_t) gHdffSetup.TvFormat;
|
||||||
|
videoFormat.VideoConversion = (HdffVideoConversion_t) gHdffSetup.VideoConversion;
|
||||||
|
mHdffCmdIf->CmdAvSetVideoFormat(0, &videoFormat);
|
||||||
|
}
|
||||||
cDvbDevice::MakePrimaryDevice(On);
|
cDvbDevice::MakePrimaryDevice(On);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -235,37 +243,6 @@ uchar *cDvbHdFfDevice::GrabImage(int &Size, bool Jpeg, int Quality, int SizeX, i
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
void cDvbHdFfDevice::SetVideoDisplayFormat(eVideoDisplayFormat VideoDisplayFormat)
|
|
||||||
{
|
|
||||||
//TODO???
|
|
||||||
cDevice::SetVideoDisplayFormat(VideoDisplayFormat);
|
|
||||||
}
|
|
||||||
|
|
||||||
void cDvbHdFfDevice::SetVideoFormat(bool VideoFormat16_9)
|
|
||||||
{
|
|
||||||
HdffVideoFormat_t videoFormat;
|
|
||||||
videoFormat.AutomaticEnabled = true;
|
|
||||||
videoFormat.AfdEnabled = false;
|
|
||||||
videoFormat.TvFormat = (HdffTvFormat_t) gHdffSetup.TvFormat;
|
|
||||||
videoFormat.VideoConversion = (HdffVideoConversion_t) gHdffSetup.VideoConversion;
|
|
||||||
mHdffCmdIf->CmdAvSetVideoFormat(0, &videoFormat);
|
|
||||||
}
|
|
||||||
|
|
||||||
eVideoSystem cDvbHdFfDevice::GetVideoSystem(void)
|
|
||||||
{
|
|
||||||
eVideoSystem VideoSystem = vsPAL;
|
|
||||||
if (fd_video >= 0) {
|
|
||||||
video_size_t vs;
|
|
||||||
if (ioctl(fd_video, VIDEO_GET_SIZE, &vs) == 0) {
|
|
||||||
if (vs.h == 480 || vs.h == 240)
|
|
||||||
VideoSystem = vsNTSC;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
LOG_ERROR;
|
|
||||||
}
|
|
||||||
return VideoSystem;
|
|
||||||
}
|
|
||||||
|
|
||||||
void cDvbHdFfDevice::GetVideoSize(int &Width, int &Height, double &VideoAspect)
|
void cDvbHdFfDevice::GetVideoSize(int &Width, int &Height, double &VideoAspect)
|
||||||
{
|
{
|
||||||
if (fd_video >= 0) {
|
if (fd_video >= 0) {
|
||||||
@ -383,8 +360,8 @@ bool cDvbHdFfDevice::SetChannelDevice(const cChannel *Channel, bool LiveView)
|
|||||||
|
|
||||||
bool DoTune = !IsTunedToTransponder(Channel);
|
bool DoTune = !IsTunedToTransponder(Channel);
|
||||||
|
|
||||||
bool pidHandlesVideo = pidHandles[ptVideo].pid == vpid;
|
bool pidHandlesVideo = vpid && pidHandles[ptVideo].pid == vpid;
|
||||||
bool pidHandlesAudio = pidHandles[ptAudio].pid == apid;
|
bool pidHandlesAudio = apid && pidHandles[ptAudio].pid == apid;
|
||||||
|
|
||||||
bool TurnOffLivePIDs = DoTune
|
bool TurnOffLivePIDs = DoTune
|
||||||
|| !IsPrimaryDevice()
|
|| !IsPrimaryDevice()
|
||||||
@ -443,11 +420,6 @@ void cDvbHdFfDevice::SetVolumeDevice(int Volume)
|
|||||||
mHdffCmdIf->CmdMuxSetVolume(Volume * 100 / 255);
|
mHdffCmdIf->CmdMuxSetVolume(Volume * 100 / 255);
|
||||||
}
|
}
|
||||||
|
|
||||||
void cDvbHdFfDevice::SetDigitalAudioDevice(bool On)
|
|
||||||
{
|
|
||||||
// not needed
|
|
||||||
}
|
|
||||||
|
|
||||||
void cDvbHdFfDevice::SetAudioTrackDevice(eTrackType Type)
|
void cDvbHdFfDevice::SetAudioTrackDevice(eTrackType Type)
|
||||||
{
|
{
|
||||||
//printf("SetAudioTrackDevice %d\n", Type);
|
//printf("SetAudioTrackDevice %d\n", Type);
|
||||||
|
@ -51,9 +51,6 @@ public:
|
|||||||
// Video format facilities
|
// Video format facilities
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual void SetVideoDisplayFormat(eVideoDisplayFormat VideoDisplayFormat);
|
|
||||||
virtual void SetVideoFormat(bool VideoFormat16_9);
|
|
||||||
virtual eVideoSystem GetVideoSystem(void);
|
|
||||||
virtual void GetVideoSize(int &Width, int &Height, double &VideoAspect);
|
virtual void GetVideoSize(int &Width, int &Height, double &VideoAspect);
|
||||||
virtual void GetOsdSize(int &Width, int &Height, double &PixelAspect);
|
virtual void GetOsdSize(int &Width, int &Height, double &PixelAspect);
|
||||||
|
|
||||||
@ -70,7 +67,6 @@ protected:
|
|||||||
virtual int GetAudioChannelDevice(void);
|
virtual int GetAudioChannelDevice(void);
|
||||||
virtual void SetAudioChannelDevice(int AudioChannel);
|
virtual void SetAudioChannelDevice(int AudioChannel);
|
||||||
virtual void SetVolumeDevice(int Volume);
|
virtual void SetVolumeDevice(int Volume);
|
||||||
virtual void SetDigitalAudioDevice(bool On);
|
|
||||||
|
|
||||||
// Player facilities
|
// Player facilities
|
||||||
|
|
||||||
|
@ -55,3 +55,7 @@ VDR Plugin 'dvbsddevice' Revision History
|
|||||||
|
|
||||||
- Avoiding unnecessary pkg-config warnings in plugin Makefiles.
|
- Avoiding unnecessary pkg-config warnings in plugin Makefiles.
|
||||||
- cDevice::TrickSpeed() now has an additional parameter named Forward.
|
- cDevice::TrickSpeed() now has an additional parameter named Forward.
|
||||||
|
|
||||||
|
2014-03-15: Version 2.1.2
|
||||||
|
|
||||||
|
- The function cDevice::GetVideoSystem() has been deprecated.
|
||||||
|
@ -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: dvbsddevice.c 3.2 2014/01/01 13:43:28 kls Exp $
|
* $Id: dvbsddevice.c 3.3 2014/03/15 12:28:14 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <getopt.h>
|
#include <getopt.h>
|
||||||
#include <vdr/plugin.h>
|
#include <vdr/plugin.h>
|
||||||
#include "dvbsdffdevice.h"
|
#include "dvbsdffdevice.h"
|
||||||
|
|
||||||
static const char *VERSION = "2.1.1";
|
static const char *VERSION = "2.1.2";
|
||||||
static const char *DESCRIPTION = "SD Full Featured DVB device";
|
static const char *DESCRIPTION = "SD Full Featured DVB device";
|
||||||
|
|
||||||
class cPluginDvbsddevice : public cPlugin {
|
class cPluginDvbsddevice : public cPlugin {
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
*
|
*
|
||||||
* 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.c 3.1 2014/01/01 13:39:24 kls Exp $
|
* $Id: dvbsdffdevice.c 3.3 2014/03/15 12:35:21 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "dvbsdffdevice.h"
|
#include "dvbsdffdevice.h"
|
||||||
@ -241,21 +241,6 @@ void cDvbSdFfDevice::SetVideoFormat(bool VideoFormat16_9)
|
|||||||
SetVideoDisplayFormat(eVideoDisplayFormat(Setup.VideoDisplayFormat));
|
SetVideoDisplayFormat(eVideoDisplayFormat(Setup.VideoDisplayFormat));
|
||||||
}
|
}
|
||||||
|
|
||||||
eVideoSystem cDvbSdFfDevice::GetVideoSystem(void)
|
|
||||||
{
|
|
||||||
eVideoSystem VideoSystem = vsPAL;
|
|
||||||
if (fd_video >= 0) {
|
|
||||||
video_size_t vs;
|
|
||||||
if (ioctl(fd_video, VIDEO_GET_SIZE, &vs) == 0) {
|
|
||||||
if (vs.h == 480 || vs.h == 240)
|
|
||||||
VideoSystem = vsNTSC;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
LOG_ERROR;
|
|
||||||
}
|
|
||||||
return VideoSystem;
|
|
||||||
}
|
|
||||||
|
|
||||||
void cDvbSdFfDevice::GetVideoSize(int &Width, int &Height, double &VideoAspect)
|
void cDvbSdFfDevice::GetVideoSize(int &Width, int &Height, double &VideoAspect)
|
||||||
{
|
{
|
||||||
if (fd_video >= 0) {
|
if (fd_video >= 0) {
|
||||||
@ -400,8 +385,8 @@ bool cDvbSdFfDevice::SetChannelDevice(const cChannel *Channel, bool LiveView)
|
|||||||
|
|
||||||
bool DoTune = !IsTunedToTransponder(Channel);
|
bool DoTune = !IsTunedToTransponder(Channel);
|
||||||
|
|
||||||
bool pidHandlesVideo = pidHandles[ptVideo].pid == vpid;
|
bool pidHandlesVideo = vpid && pidHandles[ptVideo].pid == vpid;
|
||||||
bool pidHandlesAudio = pidHandles[ptAudio].pid == apid;
|
bool pidHandlesAudio = apid && pidHandles[ptAudio].pid == apid;
|
||||||
|
|
||||||
bool TurnOffLivePIDs = DoTune
|
bool TurnOffLivePIDs = DoTune
|
||||||
|| !IsPrimaryDevice()
|
|| !IsPrimaryDevice()
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
*
|
*
|
||||||
* 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 3.1 2014/01/01 13:39:30 kls Exp $
|
* $Id: dvbsdffdevice.h 3.2 2014/03/15 12:36:35 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __DVBSDFFDEVICE_H
|
#ifndef __DVBSDFFDEVICE_H
|
||||||
@ -63,7 +63,6 @@ public:
|
|||||||
public:
|
public:
|
||||||
virtual void SetVideoDisplayFormat(eVideoDisplayFormat VideoDisplayFormat);
|
virtual void SetVideoDisplayFormat(eVideoDisplayFormat VideoDisplayFormat);
|
||||||
virtual void SetVideoFormat(bool VideoFormat16_9);
|
virtual void SetVideoFormat(bool VideoFormat16_9);
|
||||||
virtual eVideoSystem GetVideoSystem(void);
|
|
||||||
virtual void GetVideoSize(int &Width, int &Height, double &VideoAspect);
|
virtual void GetVideoSize(int &Width, int &Height, double &VideoAspect);
|
||||||
virtual void GetOsdSize(int &Width, int &Height, double &PixelAspect);
|
virtual void GetOsdSize(int &Width, int &Height, double &PixelAspect);
|
||||||
|
|
||||||
|
@ -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: channels.c 3.4 2014/01/04 15:01:52 kls Exp $
|
* $Id: channels.c 3.5 2014/03/10 13:14:02 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "channels.h"
|
#include "channels.h"
|
||||||
@ -1039,7 +1039,7 @@ cChannel *cChannels::NewChannel(const cChannel *Transponder, const char *Name, c
|
|||||||
void cChannels::MarkObsoleteChannels(int Source, int Nid, int Tid)
|
void cChannels::MarkObsoleteChannels(int Source, int Nid, int Tid)
|
||||||
{
|
{
|
||||||
for (cChannel *channel = First(); channel; channel = Next(channel)) {
|
for (cChannel *channel = First(); channel; channel = Next(channel)) {
|
||||||
if (time(NULL) - channel->Seen() > CHANNELTIMEOBSOLETE && channel->Source() == Source && channel->Nid() == Nid && channel->Tid() == Tid) {
|
if (time(NULL) - channel->Seen() > CHANNELTIMEOBSOLETE && channel->Source() == Source && channel->Nid() == Nid && channel->Tid() == Tid && channel->Rid() == 0) {
|
||||||
if (!endswith(channel->Name(), CHANNELMARKOBSOLETE))
|
if (!endswith(channel->Name(), CHANNELMARKOBSOLETE))
|
||||||
channel->SetName(cString::sprintf("%s %s", channel->Name(), CHANNELMARKOBSOLETE), channel->ShortName(), cString::sprintf("%s %s", CHANNELMARKOBSOLETE, channel->Provider()));
|
channel->SetName(cString::sprintf("%s %s", channel->Name(), CHANNELMARKOBSOLETE), channel->ShortName(), cString::sprintf("%s %s", CHANNELMARKOBSOLETE, channel->Provider()));
|
||||||
}
|
}
|
||||||
|
6
ci.c
6
ci.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: ci.c 3.11 2014/02/08 12:25:55 kls Exp $
|
* $Id: ci.c 3.12 2014/02/25 09:59:55 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "ci.h"
|
#include "ci.h"
|
||||||
@ -864,7 +864,7 @@ void cCiDateTime::SendDateTime(void)
|
|||||||
#pragma pack(1)
|
#pragma pack(1)
|
||||||
struct tTime { uint16_t mjd; uint8_t h, m, s; short offset; };
|
struct tTime { uint16_t mjd; uint8_t h, m, s; short offset; };
|
||||||
#pragma pack()
|
#pragma pack()
|
||||||
tTime T = { .mjd = htons(MJD), .h = DEC2BCD(tm_gmt.tm_hour), .m = DEC2BCD(tm_gmt.tm_min), .s = DEC2BCD(tm_gmt.tm_sec), .offset = short(htons(tm_loc.tm_gmtoff / 60)) };
|
tTime T = { mjd : htons(MJD), h : DEC2BCD(tm_gmt.tm_hour), m : DEC2BCD(tm_gmt.tm_min), s : DEC2BCD(tm_gmt.tm_sec), offset : short(htons(tm_loc.tm_gmtoff / 60)) };
|
||||||
bool OldDumpTPDUDataTransfer = DumpTPDUDataTransfer;
|
bool OldDumpTPDUDataTransfer = DumpTPDUDataTransfer;
|
||||||
DumpTPDUDataTransfer &= DumpDateTime;
|
DumpTPDUDataTransfer &= DumpDateTime;
|
||||||
if (DumpDateTime)
|
if (DumpDateTime)
|
||||||
@ -1004,7 +1004,7 @@ void cCiMMI::Process(int Length, const uint8_t *Data)
|
|||||||
case DCC_SET_MMI_MODE:
|
case DCC_SET_MMI_MODE:
|
||||||
if (l == 2 && *++d == MM_HIGH_LEVEL) {
|
if (l == 2 && *++d == MM_HIGH_LEVEL) {
|
||||||
struct tDisplayReply { uint8_t id; uint8_t mode; };
|
struct tDisplayReply { uint8_t id; uint8_t mode; };
|
||||||
tDisplayReply dr = { .id = DRI_MMI_MODE_ACK, .mode = MM_HIGH_LEVEL };
|
tDisplayReply dr = { id : DRI_MMI_MODE_ACK, mode : MM_HIGH_LEVEL };
|
||||||
dbgprotocol("Slot %d: ==> Display Reply (%d)\n", Tc()->CamSlot()->SlotNumber(), SessionId());
|
dbgprotocol("Slot %d: ==> Display Reply (%d)\n", Tc()->CamSlot()->SlotNumber(), SessionId());
|
||||||
SendData(AOT_DISPLAY_REPLY, 2, (uint8_t *)&dr);
|
SendData(AOT_DISPLAY_REPLY, 2, (uint8_t *)&dr);
|
||||||
}
|
}
|
||||||
|
10
config.h
10
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 3.7 2014/01/26 12:31:58 kls Exp $
|
* $Id: config.h 3.8 2014/02/25 10:00:23 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __CONFIG_H
|
#ifndef __CONFIG_H
|
||||||
@ -22,13 +22,13 @@
|
|||||||
|
|
||||||
// VDR's own version number:
|
// VDR's own version number:
|
||||||
|
|
||||||
#define VDRVERSION "2.1.5"
|
#define VDRVERSION "2.1.6"
|
||||||
#define VDRVERSNUM 20105 // Version * 10000 + Major * 100 + Minor
|
#define VDRVERSNUM 20106 // Version * 10000 + Major * 100 + Minor
|
||||||
|
|
||||||
// The plugin API's version number:
|
// The plugin API's version number:
|
||||||
|
|
||||||
#define APIVERSION "2.1.5"
|
#define APIVERSION "2.1.6"
|
||||||
#define APIVERSNUM 20105 // Version * 10000 + Major * 100 + Minor
|
#define APIVERSNUM 20106 // 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
|
||||||
|
10
device.c
10
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 3.12 2014/02/18 13:12:39 kls Exp $
|
* $Id: device.c 3.15 2014/03/15 13:23:28 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "device.h"
|
#include "device.h"
|
||||||
@ -430,11 +430,6 @@ void cDevice::SetVideoFormat(bool VideoFormat16_9)
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
eVideoSystem cDevice::GetVideoSystem(void)
|
|
||||||
{
|
|
||||||
return vsPAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
void cDevice::GetVideoSize(int &Width, int &Height, double &VideoAspect)
|
void cDevice::GetVideoSize(int &Width, int &Height, double &VideoAspect)
|
||||||
{
|
{
|
||||||
Width = 0;
|
Width = 0;
|
||||||
@ -575,7 +570,7 @@ void cDevice::StartSectionHandler(void)
|
|||||||
AttachFilter(eitFilter = new cEitFilter);
|
AttachFilter(eitFilter = new cEitFilter);
|
||||||
AttachFilter(patFilter = new cPatFilter);
|
AttachFilter(patFilter = new cPatFilter);
|
||||||
AttachFilter(sdtFilter = new cSdtFilter(patFilter));
|
AttachFilter(sdtFilter = new cSdtFilter(patFilter));
|
||||||
AttachFilter(nitFilter = new cNitFilter);
|
AttachFilter(nitFilter = new cNitFilter(sdtFilter));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1608,6 +1603,7 @@ void cDevice::Action(void)
|
|||||||
for (int i = 0; i < MAXRECEIVERS; i++) {
|
for (int i = 0; i < MAXRECEIVERS; i++) {
|
||||||
if (receiver[i] && receiver[i]->WantsPid(Pid)) {
|
if (receiver[i] && receiver[i]->WantsPid(Pid)) {
|
||||||
if (DetachReceivers) {
|
if (DetachReceivers) {
|
||||||
|
dsyslog("detaching receiver - won't decrypt channel %s with CAM %d", *receiver[i]->ChannelID().ToString(), CamSlotNumber);
|
||||||
ChannelCamRelations.SetChecked(receiver[i]->ChannelID(), CamSlotNumber);
|
ChannelCamRelations.SetChecked(receiver[i]->ChannelID(), CamSlotNumber);
|
||||||
Detach(receiver[i]);
|
Detach(receiver[i]);
|
||||||
}
|
}
|
||||||
|
19
device.h
19
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 3.8 2014/01/02 10:47:08 kls Exp $
|
* $Id: device.h 3.9 2014/03/15 14:04:58 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __DEVICE_H
|
#ifndef __DEVICE_H
|
||||||
@ -55,9 +55,12 @@ enum ePlayMode { pmNone, // audio/video from decoder
|
|||||||
// KNOWN TO YOUR PLAYER.
|
// KNOWN TO YOUR PLAYER.
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define DEPRECATED_VIDEOSYSTEM
|
||||||
|
#ifdef DEPRECATED_VIDEOSYSTEM
|
||||||
enum eVideoSystem { vsPAL,
|
enum eVideoSystem { vsPAL,
|
||||||
vsNTSC
|
vsNTSC
|
||||||
};
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
enum eVideoDisplayFormat { vdfPanAndScan,
|
enum eVideoDisplayFormat { vdfPanAndScan,
|
||||||
vdfLetterBox,
|
vdfLetterBox,
|
||||||
@ -462,12 +465,19 @@ public:
|
|||||||
///< Sets the video display format to the given one (only useful
|
///< Sets the video display format to the given one (only useful
|
||||||
///< if this device has an MPEG decoder).
|
///< if this device has an MPEG decoder).
|
||||||
///< A derived class must first call the base class function!
|
///< A derived class must first call the base class function!
|
||||||
|
///< NOTE: this is only for SD devices. HD devices shall implement their
|
||||||
|
///< own setup menu with the necessary parameters for controlling output.
|
||||||
virtual void SetVideoFormat(bool VideoFormat16_9);
|
virtual void SetVideoFormat(bool VideoFormat16_9);
|
||||||
///< Sets the output video format to either 16:9 or 4:3 (only useful
|
///< Sets the output video format to either 16:9 or 4:3 (only useful
|
||||||
///< if this device has an MPEG decoder).
|
///< if this device has an MPEG decoder).
|
||||||
virtual eVideoSystem GetVideoSystem(void);
|
///< NOTE: this is only for SD devices. HD devices shall implement their
|
||||||
|
///< own setup menu with the necessary parameters for controlling output.
|
||||||
|
#ifdef DEPRECATED_VIDEOSYSTEM
|
||||||
|
virtual eVideoSystem GetVideoSystem(void) { return vsPAL; }
|
||||||
///< Returns the video system of the currently displayed material
|
///< Returns the video system of the currently displayed material
|
||||||
///< (default is PAL).
|
///< (default is PAL).
|
||||||
|
///< This function is deprecated and will be removed in a future version!
|
||||||
|
#endif
|
||||||
virtual void GetVideoSize(int &Width, int &Height, double &VideoAspect);
|
virtual void GetVideoSize(int &Width, int &Height, double &VideoAspect);
|
||||||
///< Returns the Width, Height and VideoAspect ratio of the currently
|
///< Returns the Width, Height and VideoAspect ratio of the currently
|
||||||
///< displayed video material. Width and Height are given in pixel
|
///< displayed video material. Width and Height are given in pixel
|
||||||
@ -566,8 +576,9 @@ protected:
|
|||||||
virtual void SetVolumeDevice(int Volume);
|
virtual void SetVolumeDevice(int Volume);
|
||||||
///< Sets the audio volume on this device (Volume = 0...255).
|
///< Sets the audio volume on this device (Volume = 0...255).
|
||||||
virtual void SetDigitalAudioDevice(bool On);
|
virtual void SetDigitalAudioDevice(bool On);
|
||||||
///< Tells the actual device that digital audio output shall be switched
|
///< Tells the output device that the current audio track is Dolby Digital.
|
||||||
///< on or off.
|
///< Only used by the original "full featured" DVB cards - do not use for new
|
||||||
|
///< developments!
|
||||||
public:
|
public:
|
||||||
bool IsMute(void) const { return mute; }
|
bool IsMute(void) const { return mute; }
|
||||||
bool ToggleMute(void);
|
bool ToggleMute(void);
|
||||||
|
23
dvbdevice.c
23
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 3.10 2014/01/20 11:46:26 kls Exp $
|
* $Id: dvbdevice.c 3.11 2014/03/16 10:38:31 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "dvbdevice.h"
|
#include "dvbdevice.h"
|
||||||
@ -36,6 +36,13 @@ static int DvbApiVersion = 0x0000; // the version of the DVB driver actually in
|
|||||||
|
|
||||||
// --- DVB Parameter Maps ----------------------------------------------------
|
// --- DVB Parameter Maps ----------------------------------------------------
|
||||||
|
|
||||||
|
const tDvbParameterMap PilotValues[] = {
|
||||||
|
{ 0, PILOT_OFF, trNOOP("off") },
|
||||||
|
{ 1, PILOT_ON, trNOOP("on") },
|
||||||
|
{ 999, PILOT_AUTO, trNOOP("auto") },
|
||||||
|
{ -1, 0, NULL }
|
||||||
|
};
|
||||||
|
|
||||||
const tDvbParameterMap InversionValues[] = {
|
const tDvbParameterMap InversionValues[] = {
|
||||||
{ 0, INVERSION_OFF, trNOOP("off") },
|
{ 0, INVERSION_OFF, trNOOP("off") },
|
||||||
{ 1, INVERSION_ON, trNOOP("on") },
|
{ 1, INVERSION_ON, trNOOP("on") },
|
||||||
@ -206,6 +213,9 @@ cDvbTransponderParameters::cDvbTransponderParameters(const char *Parameters)
|
|||||||
hierarchy = HIERARCHY_AUTO;
|
hierarchy = HIERARCHY_AUTO;
|
||||||
rollOff = ROLLOFF_AUTO;
|
rollOff = ROLLOFF_AUTO;
|
||||||
streamId = 0;
|
streamId = 0;
|
||||||
|
t2systemId = 0;
|
||||||
|
sisoMiso = 0;
|
||||||
|
pilot = PILOT_AUTO;
|
||||||
Parse(Parameters);
|
Parse(Parameters);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -227,10 +237,13 @@ cString cDvbTransponderParameters::ToString(char Type) const
|
|||||||
ST(" T*") q += PrintParameter(q, 'G', MapToUser(guard, GuardValues));
|
ST(" T*") q += PrintParameter(q, 'G', MapToUser(guard, GuardValues));
|
||||||
ST("ACST*") q += PrintParameter(q, 'I', MapToUser(inversion, InversionValues));
|
ST("ACST*") q += PrintParameter(q, 'I', MapToUser(inversion, InversionValues));
|
||||||
ST("ACST*") q += PrintParameter(q, 'M', MapToUser(modulation, ModulationValues));
|
ST("ACST*") q += PrintParameter(q, 'M', MapToUser(modulation, ModulationValues));
|
||||||
|
ST(" S 2") q += PrintParameter(q, 'N', MapToUser(pilot, PilotValues));
|
||||||
ST(" S 2") q += PrintParameter(q, 'O', MapToUser(rollOff, RollOffValues));
|
ST(" S 2") q += PrintParameter(q, 'O', MapToUser(rollOff, RollOffValues));
|
||||||
ST(" ST2") q += PrintParameter(q, 'P', streamId);
|
ST(" ST2") q += PrintParameter(q, 'P', streamId);
|
||||||
|
ST(" T2") q += PrintParameter(q, 'Q', t2systemId);
|
||||||
ST(" ST*") q += PrintParameter(q, 'S', MapToUser(system, SystemValuesSat)); // we only need the numerical value, so Sat or Terr doesn't matter
|
ST(" ST*") q += PrintParameter(q, 'S', MapToUser(system, SystemValuesSat)); // we only need the numerical value, so Sat or Terr doesn't matter
|
||||||
ST(" T*") q += PrintParameter(q, 'T', MapToUser(transmission, TransmissionValues));
|
ST(" T*") q += PrintParameter(q, 'T', MapToUser(transmission, TransmissionValues));
|
||||||
|
ST(" T2") q += PrintParameter(q, 'X', sisoMiso);
|
||||||
ST(" T*") q += PrintParameter(q, 'Y', MapToUser(hierarchy, HierarchyValues));
|
ST(" T*") q += PrintParameter(q, 'Y', MapToUser(hierarchy, HierarchyValues));
|
||||||
return buffer;
|
return buffer;
|
||||||
}
|
}
|
||||||
@ -263,12 +276,15 @@ bool cDvbTransponderParameters::Parse(const char *s)
|
|||||||
case 'I': s = ParseParameter(s, inversion, InversionValues); break;
|
case 'I': s = ParseParameter(s, inversion, InversionValues); break;
|
||||||
case 'L': polarization = 'L'; 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 'N': s = ParseParameter(s, pilot, PilotValues); break;
|
||||||
case 'O': s = ParseParameter(s, rollOff, RollOffValues); break;
|
case 'O': s = ParseParameter(s, rollOff, RollOffValues); break;
|
||||||
case 'P': s = ParseParameter(s, streamId); break;
|
case 'P': s = ParseParameter(s, streamId); break;
|
||||||
|
case 'Q': s = ParseParameter(s, t2systemId); break;
|
||||||
case 'R': polarization = 'R'; 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 = 'V'; s++; break;
|
case 'V': polarization = 'V'; s++; break;
|
||||||
|
case 'X': s = ParseParameter(s, sisoMiso); 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;
|
||||||
@ -839,7 +855,7 @@ bool cDvbTuner::SetFrontend(void)
|
|||||||
SETCMD(DTV_INVERSION, dtp.Inversion());
|
SETCMD(DTV_INVERSION, dtp.Inversion());
|
||||||
if (frontendType == SYS_DVBS2) {
|
if (frontendType == SYS_DVBS2) {
|
||||||
// DVB-S2
|
// DVB-S2
|
||||||
SETCMD(DTV_PILOT, PILOT_AUTO);
|
SETCMD(DTV_PILOT, dtp.Pilot());
|
||||||
SETCMD(DTV_ROLLOFF, dtp.RollOff());
|
SETCMD(DTV_ROLLOFF, dtp.RollOff());
|
||||||
if (DvbApiVersion >= 0x0508)
|
if (DvbApiVersion >= 0x0508)
|
||||||
SETCMD(DTV_STREAM_ID, dtp.StreamId());
|
SETCMD(DTV_STREAM_ID, dtp.StreamId());
|
||||||
@ -1038,6 +1054,9 @@ cOsdItem *cDvbSourceParam::GetOsdItem(void)
|
|||||||
case 10: ST(" T") return new cMenuEditMapItem( tr("Hierarchy"), &dtp.hierarchy, HierarchyValues); else return GetOsdItem();
|
case 10: ST(" T") return new cMenuEditMapItem( tr("Hierarchy"), &dtp.hierarchy, HierarchyValues); else return GetOsdItem();
|
||||||
case 11: ST(" S ") return new cMenuEditMapItem( tr("Rolloff"), &dtp.rollOff, RollOffValues); else return GetOsdItem();
|
case 11: ST(" S ") return new cMenuEditMapItem( tr("Rolloff"), &dtp.rollOff, RollOffValues); else return GetOsdItem();
|
||||||
case 12: ST(" ST") return new cMenuEditIntItem( tr("StreamId"), &dtp.streamId, 0, 255); else return GetOsdItem();
|
case 12: ST(" ST") return new cMenuEditIntItem( tr("StreamId"), &dtp.streamId, 0, 255); else return GetOsdItem();
|
||||||
|
case 13: ST(" S ") return new cMenuEditMapItem( tr("Pilot"), &dtp.pilot, PilotValues); else return GetOsdItem();
|
||||||
|
case 14: ST(" T") return new cMenuEditIntItem( tr("T2SystemId"), &dtp.t2systemId, 0, 65535); else return GetOsdItem();
|
||||||
|
case 15: ST(" T") return new cMenuEditIntItem( tr("SISO/MISO"), &dtp.sisoMiso, 0, 1); else return GetOsdItem();
|
||||||
default: return NULL;
|
default: return NULL;
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
|
12
dvbdevice.h
12
dvbdevice.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: dvbdevice.h 3.4 2014/01/16 11:45:35 kls Exp $
|
* $Id: dvbdevice.h 3.5 2014/03/16 10:38:31 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __DVBDEVICE_H
|
#ifndef __DVBDEVICE_H
|
||||||
@ -92,6 +92,7 @@ int MapToDriver(int Value, const tDvbParameterMap *Map);
|
|||||||
int UserIndex(int Value, const tDvbParameterMap *Map);
|
int UserIndex(int Value, const tDvbParameterMap *Map);
|
||||||
int DriverIndex(int Value, const tDvbParameterMap *Map);
|
int DriverIndex(int Value, const tDvbParameterMap *Map);
|
||||||
|
|
||||||
|
extern const tDvbParameterMap PilotValues[];
|
||||||
extern const tDvbParameterMap InversionValues[];
|
extern const tDvbParameterMap InversionValues[];
|
||||||
extern const tDvbParameterMap BandwidthValues[];
|
extern const tDvbParameterMap BandwidthValues[];
|
||||||
extern const tDvbParameterMap CoderateValues[];
|
extern const tDvbParameterMap CoderateValues[];
|
||||||
@ -118,6 +119,9 @@ private:
|
|||||||
int hierarchy;
|
int hierarchy;
|
||||||
int rollOff;
|
int rollOff;
|
||||||
int streamId;
|
int streamId;
|
||||||
|
int t2systemId;
|
||||||
|
int sisoMiso;
|
||||||
|
int pilot;
|
||||||
int PrintParameter(char *p, char Name, int Value) const;
|
int PrintParameter(char *p, char Name, int Value) const;
|
||||||
const char *ParseParameter(const char *s, int &Value, const tDvbParameterMap *Map = NULL);
|
const char *ParseParameter(const char *s, int &Value, const tDvbParameterMap *Map = NULL);
|
||||||
public:
|
public:
|
||||||
@ -134,6 +138,9 @@ public:
|
|||||||
int Hierarchy(void) const { return hierarchy; }
|
int Hierarchy(void) const { return hierarchy; }
|
||||||
int RollOff(void) const { return rollOff; }
|
int RollOff(void) const { return rollOff; }
|
||||||
int StreamId(void) const { return streamId; }
|
int StreamId(void) const { return streamId; }
|
||||||
|
int T2SystemId(void) const { return t2systemId; }
|
||||||
|
int SisoMiso(void) const { return sisoMiso; }
|
||||||
|
int Pilot(void) const { return pilot; }
|
||||||
void SetPolarization(char Polarization) { polarization = Polarization; }
|
void SetPolarization(char Polarization) { polarization = Polarization; }
|
||||||
void SetInversion(int Inversion) { inversion = Inversion; }
|
void SetInversion(int Inversion) { inversion = Inversion; }
|
||||||
void SetBandwidth(int Bandwidth) { bandwidth = Bandwidth; }
|
void SetBandwidth(int Bandwidth) { bandwidth = Bandwidth; }
|
||||||
@ -146,6 +153,9 @@ public:
|
|||||||
void SetHierarchy(int Hierarchy) { hierarchy = Hierarchy; }
|
void SetHierarchy(int Hierarchy) { hierarchy = Hierarchy; }
|
||||||
void SetRollOff(int RollOff) { rollOff = RollOff; }
|
void SetRollOff(int RollOff) { rollOff = RollOff; }
|
||||||
void SetStreamId(int StreamId) { streamId = StreamId; }
|
void SetStreamId(int StreamId) { streamId = StreamId; }
|
||||||
|
void SetT2SystemId(int T2SystemId) { t2systemId = T2SystemId; }
|
||||||
|
void SetSisoMiso(int SisoMiso) { sisoMiso = SisoMiso; }
|
||||||
|
void SetPilot(int Pilot) { pilot = Pilot; }
|
||||||
cString ToString(char Type) const;
|
cString ToString(char Type) const;
|
||||||
bool Parse(const char *s);
|
bool Parse(const char *s);
|
||||||
};
|
};
|
||||||
|
20
menu.c
20
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 3.19 2014/02/08 12:36:12 kls Exp $
|
* $Id: menu.c 3.23 2014/03/16 10:38:31 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "menu.h"
|
#include "menu.h"
|
||||||
@ -214,9 +214,9 @@ void cMenuEditChannel::Setup(void)
|
|||||||
Add(new cMenuEditIntItem( tr("Tpid"), &data.tpid, 0, 0x1FFF));
|
Add(new cMenuEditIntItem( tr("Tpid"), &data.tpid, 0, 0x1FFF));
|
||||||
Add(new cMenuEditCaItem( tr("CA"), &data.caids[0]));
|
Add(new cMenuEditCaItem( tr("CA"), &data.caids[0]));
|
||||||
Add(new cMenuEditIntItem( tr("Sid"), &data.sid, 1, 0xFFFF));
|
Add(new cMenuEditIntItem( tr("Sid"), &data.sid, 1, 0xFFFF));
|
||||||
/* XXX not yet used
|
|
||||||
Add(new cMenuEditIntItem( tr("Nid"), &data.nid, 0));
|
Add(new cMenuEditIntItem( tr("Nid"), &data.nid, 0));
|
||||||
Add(new cMenuEditIntItem( tr("Tid"), &data.tid, 0));
|
Add(new cMenuEditIntItem( tr("Tid"), &data.tid, 0));
|
||||||
|
/* XXX not yet used
|
||||||
Add(new cMenuEditIntItem( tr("Rid"), &data.rid, 0));
|
Add(new cMenuEditIntItem( tr("Rid"), &data.rid, 0));
|
||||||
XXX*/
|
XXX*/
|
||||||
// Parameters for specific types of sources:
|
// Parameters for specific types of sources:
|
||||||
@ -2533,6 +2533,7 @@ public:
|
|||||||
int Level(void) { return level; }
|
int Level(void) { return level; }
|
||||||
cRecording *Recording(void) { return recording; }
|
cRecording *Recording(void) { return recording; }
|
||||||
bool IsDirectory(void) { return name != NULL; }
|
bool IsDirectory(void) { return name != NULL; }
|
||||||
|
void SetRecording(cRecording *Recording) { recording = Recording; }
|
||||||
virtual void SetMenuItem(cSkinDisplayMenu *DisplayMenu, int Index, bool Current, bool Selectable);
|
virtual void SetMenuItem(cSkinDisplayMenu *DisplayMenu, int Index, bool Current, bool Selectable);
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -2596,7 +2597,10 @@ cMenuRecordings::cMenuRecordings(const char *Base, int Level, bool OpenSubMenus,
|
|||||||
|
|
||||||
cMenuRecordings::~cMenuRecordings()
|
cMenuRecordings::~cMenuRecordings()
|
||||||
{
|
{
|
||||||
helpKeys = -1;
|
if (cMenuRecordingItem *ri = (cMenuRecordingItem *)Get(Current())) {
|
||||||
|
if (!ri->IsDirectory())
|
||||||
|
SetRecording(ri->Recording()->FileName());
|
||||||
|
}
|
||||||
free(base);
|
free(base);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2782,6 +2786,7 @@ eOSState cMenuRecordings::Delete(void)
|
|||||||
Display();
|
Display();
|
||||||
if (!Count())
|
if (!Count())
|
||||||
return osBack;
|
return osBack;
|
||||||
|
return osUser2;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
Skins.Message(mtError, tr("Error while deleting recording!"));
|
Skins.Message(mtError, tr("Error while deleting recording!"));
|
||||||
@ -2861,6 +2866,14 @@ eOSState cMenuRecordings::ProcessKey(eKeys Key)
|
|||||||
path = NULL;
|
path = NULL;
|
||||||
fileName = NULL;
|
fileName = NULL;
|
||||||
}
|
}
|
||||||
|
else if (state == osUser2) {
|
||||||
|
// a recording in a sub folder was deleted, so update the current item
|
||||||
|
cOsdMenu *m = HasSubMenu() ? SubMenu() : this;
|
||||||
|
if (cMenuRecordingItem *ri = (cMenuRecordingItem *)Get(Current())) {
|
||||||
|
if (cMenuRecordingItem *riSub = (cMenuRecordingItem *)m->Get(m->Current()))
|
||||||
|
ri->SetRecording(riSub->Recording());
|
||||||
|
}
|
||||||
|
}
|
||||||
if (Key == kYellow && HadSubMenu && !HasSubMenu()) {
|
if (Key == kYellow && HadSubMenu && !HasSubMenu()) {
|
||||||
// the last recording in a subdirectory was deleted, so let's go back up
|
// the last recording in a subdirectory was deleted, so let's go back up
|
||||||
cOsdMenu::Del(Current());
|
cOsdMenu::Del(Current());
|
||||||
@ -4952,6 +4965,7 @@ void cReplayControl::Stop(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
cDvbPlayerControl::Stop();
|
cDvbPlayerControl::Stop();
|
||||||
|
cMenuRecordings::SetRecording(NULL); // make sure opening the Recordings menu navigates to the last replayed recording
|
||||||
}
|
}
|
||||||
|
|
||||||
void cReplayControl::SetRecording(const char *FileName)
|
void cReplayControl::SetRecording(const char *FileName)
|
||||||
|
15
nit.c
15
nit.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: nit.c 3.0 2013/03/07 09:42:29 kls Exp $
|
* $Id: nit.c 3.3 2014/03/16 10:38:31 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "nit.h"
|
#include "nit.h"
|
||||||
@ -19,8 +19,9 @@
|
|||||||
#define DVB_SYSTEM_1 0 // see also dvbdevice.c
|
#define DVB_SYSTEM_1 0 // see also dvbdevice.c
|
||||||
#define DVB_SYSTEM_2 1
|
#define DVB_SYSTEM_2 1
|
||||||
|
|
||||||
cNitFilter::cNitFilter(void)
|
cNitFilter::cNitFilter(cSdtFilter *SdtFilter)
|
||||||
{
|
{
|
||||||
|
sdtFilter = SdtFilter;
|
||||||
numNits = 0;
|
numNits = 0;
|
||||||
networkId = 0;
|
networkId = 0;
|
||||||
Set(0x10, 0x40); // NIT
|
Set(0x10, 0x40); // NIT
|
||||||
@ -183,6 +184,7 @@ void cNitFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
sdtFilter->Trigger(Source);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SI::S2SatelliteDeliverySystemDescriptorTag: {
|
case SI::S2SatelliteDeliverySystemDescriptorTag: {
|
||||||
@ -243,7 +245,7 @@ void cNitFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!found || forceTransponderUpdate) {
|
if (!found || forceTransponderUpdate) {
|
||||||
for (int n = 0; n < NumFrequencies; n++) {
|
for (int n = 0; n < NumFrequencies; n++) {
|
||||||
cChannel *Channel = new cChannel;
|
cChannel *Channel = new cChannel;
|
||||||
Channel->SetId(ts.getOriginalNetworkId(), ts.getTransportStreamId(), 0, 0);
|
Channel->SetId(ts.getOriginalNetworkId(), ts.getTransportStreamId(), 0, 0);
|
||||||
if (Channel->SetTransponderData(Source, Frequencies[n], SymbolRate, dtp.ToString('C')))
|
if (Channel->SetTransponderData(Source, Frequencies[n], SymbolRate, dtp.ToString('C')))
|
||||||
@ -253,6 +255,7 @@ void cNitFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
sdtFilter->Trigger(Source);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SI::TerrestrialDeliverySystemDescriptorTag: {
|
case SI::TerrestrialDeliverySystemDescriptorTag: {
|
||||||
@ -314,8 +317,9 @@ void cNitFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
|
|||||||
else
|
else
|
||||||
delete Channel;
|
delete Channel;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
sdtFilter->Trigger(Source);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SI::ExtensionDescriptorTag: {
|
case SI::ExtensionDescriptorTag: {
|
||||||
@ -329,11 +333,12 @@ void cNitFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
|
|||||||
SI::T2DeliverySystemDescriptor *td = (SI::T2DeliverySystemDescriptor *)d;
|
SI::T2DeliverySystemDescriptor *td = (SI::T2DeliverySystemDescriptor *)d;
|
||||||
int Frequency = Channel->Frequency();
|
int Frequency = Channel->Frequency();
|
||||||
int SymbolRate = Channel->Srate();
|
int SymbolRate = Channel->Srate();
|
||||||
//int SystemId = td->getSystemId();
|
|
||||||
cDvbTransponderParameters dtp(Channel->Parameters());
|
cDvbTransponderParameters dtp(Channel->Parameters());
|
||||||
dtp.SetSystem(DVB_SYSTEM_2);
|
dtp.SetSystem(DVB_SYSTEM_2);
|
||||||
dtp.SetStreamId(td->getPlpId());
|
dtp.SetStreamId(td->getPlpId());
|
||||||
|
dtp.SetT2SystemId(td->getT2SystemId());
|
||||||
if (td->getExtendedDataFlag()) {
|
if (td->getExtendedDataFlag()) {
|
||||||
|
dtp.SetSisoMiso(td->getSisoMiso());
|
||||||
static int T2Bandwidths[] = { 8000000, 7000000, 6000000, 5000000, 10000000, 1712000, 0, 0 };
|
static int T2Bandwidths[] = { 8000000, 7000000, 6000000, 5000000, 10000000, 1712000, 0, 0 };
|
||||||
dtp.SetBandwidth(T2Bandwidths[td->getBandwidth()]);
|
dtp.SetBandwidth(T2Bandwidths[td->getBandwidth()]);
|
||||||
static int T2GuardIntervals[] = { GUARD_INTERVAL_1_32, GUARD_INTERVAL_1_16, GUARD_INTERVAL_1_8, GUARD_INTERVAL_1_4, GUARD_INTERVAL_1_128, GUARD_INTERVAL_19_128, GUARD_INTERVAL_19_256, 0 };
|
static int T2GuardIntervals[] = { GUARD_INTERVAL_1_32, GUARD_INTERVAL_1_16, GUARD_INTERVAL_1_8, GUARD_INTERVAL_1_4, GUARD_INTERVAL_1_128, GUARD_INTERVAL_19_128, GUARD_INTERVAL_19_256, 0 };
|
||||||
|
6
nit.h
6
nit.h
@ -4,13 +4,14 @@
|
|||||||
* 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: nit.h 3.0 2007/06/10 08:50:21 kls Exp $
|
* $Id: nit.h 3.1 2014/03/10 14:12:05 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __NIT_H
|
#ifndef __NIT_H
|
||||||
#define __NIT_H
|
#define __NIT_H
|
||||||
|
|
||||||
#include "filter.h"
|
#include "filter.h"
|
||||||
|
#include "sdt.h"
|
||||||
|
|
||||||
#define MAXNITS 16
|
#define MAXNITS 16
|
||||||
#define MAXNETWORKNAME Utf8BufSize(256)
|
#define MAXNETWORKNAME Utf8BufSize(256)
|
||||||
@ -26,13 +27,14 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
cSectionSyncer sectionSyncer;
|
cSectionSyncer sectionSyncer;
|
||||||
|
cSdtFilter *sdtFilter;
|
||||||
cNit nits[MAXNITS];
|
cNit nits[MAXNITS];
|
||||||
u_short networkId;
|
u_short networkId;
|
||||||
int numNits;
|
int numNits;
|
||||||
protected:
|
protected:
|
||||||
virtual void Process(u_short Pid, u_char Tid, const u_char *Data, int Length);
|
virtual void Process(u_short Pid, u_char Tid, const u_char *Data, int Length);
|
||||||
public:
|
public:
|
||||||
cNitFilter(void);
|
cNitFilter(cSdtFilter *SdtFilter);
|
||||||
virtual void SetStatus(bool On);
|
virtual void SetStatus(bool On);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
15
po/ar.po
15
po/ar.po
@ -80,6 +80,15 @@ msgstr "Rolloff"
|
|||||||
msgid "StreamId"
|
msgid "StreamId"
|
||||||
msgstr "StreamId"
|
msgstr "StreamId"
|
||||||
|
|
||||||
|
msgid "Pilot"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "T2SystemId"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "SISO/MISO"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Starting EPG scan"
|
msgid "Starting EPG scan"
|
||||||
msgstr "EPG ا لبدء بالبحث على دليل القنوات الالكترونى "
|
msgstr "EPG ا لبدء بالبحث على دليل القنوات الالكترونى "
|
||||||
|
|
||||||
@ -567,6 +576,12 @@ msgstr "الكامة"
|
|||||||
msgid "Sid"
|
msgid "Sid"
|
||||||
msgstr "Sid"
|
msgstr "Sid"
|
||||||
|
|
||||||
|
msgid "Nid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Tid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Channel settings are not unique!"
|
msgid "Channel settings are not unique!"
|
||||||
msgstr "اعدادات القناة غبر موحد"
|
msgstr "اعدادات القناة غبر موحد"
|
||||||
|
|
||||||
|
15
po/ca_ES.po
15
po/ca_ES.po
@ -79,6 +79,15 @@ msgstr "Rolloff"
|
|||||||
msgid "StreamId"
|
msgid "StreamId"
|
||||||
msgstr "StreamId"
|
msgstr "StreamId"
|
||||||
|
|
||||||
|
msgid "Pilot"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "T2SystemId"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "SISO/MISO"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Starting EPG scan"
|
msgid "Starting EPG scan"
|
||||||
msgstr "Iniciant exploració EPG"
|
msgstr "Iniciant exploració EPG"
|
||||||
|
|
||||||
@ -566,6 +575,12 @@ msgstr "Acc
|
|||||||
msgid "Sid"
|
msgid "Sid"
|
||||||
msgstr "Sid"
|
msgstr "Sid"
|
||||||
|
|
||||||
|
msgid "Nid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Tid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Channel settings are not unique!"
|
msgid "Channel settings are not unique!"
|
||||||
msgstr "Propietats del canal duplicades!"
|
msgstr "Propietats del canal duplicades!"
|
||||||
|
|
||||||
|
15
po/cs_CZ.po
15
po/cs_CZ.po
@ -79,6 +79,15 @@ msgstr "RollOff"
|
|||||||
msgid "StreamId"
|
msgid "StreamId"
|
||||||
msgstr "StreamId"
|
msgstr "StreamId"
|
||||||
|
|
||||||
|
msgid "Pilot"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "T2SystemId"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "SISO/MISO"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Starting EPG scan"
|
msgid "Starting EPG scan"
|
||||||
msgstr "Začíná prohledávání EPG"
|
msgstr "Začíná prohledávání EPG"
|
||||||
|
|
||||||
@ -566,6 +575,12 @@ msgstr "CA"
|
|||||||
msgid "Sid"
|
msgid "Sid"
|
||||||
msgstr "Sid"
|
msgstr "Sid"
|
||||||
|
|
||||||
|
msgid "Nid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Tid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Channel settings are not unique!"
|
msgid "Channel settings are not unique!"
|
||||||
msgstr "Nastavení kanálu není jedinečné!"
|
msgstr "Nastavení kanálu není jedinečné!"
|
||||||
|
|
||||||
|
15
po/da_DK.po
15
po/da_DK.po
@ -76,6 +76,15 @@ msgstr ""
|
|||||||
msgid "StreamId"
|
msgid "StreamId"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Pilot"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "T2SystemId"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "SISO/MISO"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Starting EPG scan"
|
msgid "Starting EPG scan"
|
||||||
msgstr "Starter EPG skanning"
|
msgstr "Starter EPG skanning"
|
||||||
|
|
||||||
@ -563,6 +572,12 @@ msgstr "CA"
|
|||||||
msgid "Sid"
|
msgid "Sid"
|
||||||
msgstr "Sid"
|
msgstr "Sid"
|
||||||
|
|
||||||
|
msgid "Nid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Tid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Channel settings are not unique!"
|
msgid "Channel settings are not unique!"
|
||||||
msgstr "Kanalindstillinger er ikke entydige!"
|
msgstr "Kanalindstillinger er ikke entydige!"
|
||||||
|
|
||||||
|
15
po/de_DE.po
15
po/de_DE.po
@ -76,6 +76,15 @@ msgstr "Rolloff"
|
|||||||
msgid "StreamId"
|
msgid "StreamId"
|
||||||
msgstr "StreamId"
|
msgstr "StreamId"
|
||||||
|
|
||||||
|
msgid "Pilot"
|
||||||
|
msgstr "Pilot"
|
||||||
|
|
||||||
|
msgid "T2SystemId"
|
||||||
|
msgstr "T2-Systemkennung"
|
||||||
|
|
||||||
|
msgid "SISO/MISO"
|
||||||
|
msgstr "SISO/MISO"
|
||||||
|
|
||||||
msgid "Starting EPG scan"
|
msgid "Starting EPG scan"
|
||||||
msgstr "Aktualisiere EPG-Daten"
|
msgstr "Aktualisiere EPG-Daten"
|
||||||
|
|
||||||
@ -563,6 +572,12 @@ msgstr "CA"
|
|||||||
msgid "Sid"
|
msgid "Sid"
|
||||||
msgstr "Sid"
|
msgstr "Sid"
|
||||||
|
|
||||||
|
msgid "Nid"
|
||||||
|
msgstr "Nid"
|
||||||
|
|
||||||
|
msgid "Tid"
|
||||||
|
msgstr "Tid"
|
||||||
|
|
||||||
msgid "Channel settings are not unique!"
|
msgid "Channel settings are not unique!"
|
||||||
msgstr "Kanaleinstellungen sind nicht eindeutig!"
|
msgstr "Kanaleinstellungen sind nicht eindeutig!"
|
||||||
|
|
||||||
|
15
po/el_GR.po
15
po/el_GR.po
@ -76,6 +76,15 @@ msgstr ""
|
|||||||
msgid "StreamId"
|
msgid "StreamId"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Pilot"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "T2SystemId"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "SISO/MISO"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Starting EPG scan"
|
msgid "Starting EPG scan"
|
||||||
msgstr "Áñ÷Þ óÜñùóç EPG"
|
msgstr "Áñ÷Þ óÜñùóç EPG"
|
||||||
|
|
||||||
@ -563,6 +572,12 @@ msgstr "CA"
|
|||||||
msgid "Sid"
|
msgid "Sid"
|
||||||
msgstr "Sid"
|
msgstr "Sid"
|
||||||
|
|
||||||
|
msgid "Nid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Tid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Channel settings are not unique!"
|
msgid "Channel settings are not unique!"
|
||||||
msgstr "Ïé ñéèìýóåéò ôïí êáíáëéþí áëëõëïóõìðßðôïõí!"
|
msgstr "Ïé ñéèìýóåéò ôïí êáíáëéþí áëëõëïóõìðßðôïõí!"
|
||||||
|
|
||||||
|
15
po/es_ES.po
15
po/es_ES.po
@ -77,6 +77,15 @@ msgstr "Rolloff"
|
|||||||
msgid "StreamId"
|
msgid "StreamId"
|
||||||
msgstr "StreamId"
|
msgstr "StreamId"
|
||||||
|
|
||||||
|
msgid "Pilot"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "T2SystemId"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "SISO/MISO"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Starting EPG scan"
|
msgid "Starting EPG scan"
|
||||||
msgstr "Iniciando la exploración de EPG"
|
msgstr "Iniciando la exploración de EPG"
|
||||||
|
|
||||||
@ -564,6 +573,12 @@ msgstr "Acceso condicional (CA)"
|
|||||||
msgid "Sid"
|
msgid "Sid"
|
||||||
msgstr "Sid"
|
msgstr "Sid"
|
||||||
|
|
||||||
|
msgid "Nid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Tid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Channel settings are not unique!"
|
msgid "Channel settings are not unique!"
|
||||||
msgstr "!Propiedades de canal duplicadas!"
|
msgstr "!Propiedades de canal duplicadas!"
|
||||||
|
|
||||||
|
15
po/et_EE.po
15
po/et_EE.po
@ -76,6 +76,15 @@ msgstr "Rolloff"
|
|||||||
msgid "StreamId"
|
msgid "StreamId"
|
||||||
msgstr "Stream-tunnus"
|
msgstr "Stream-tunnus"
|
||||||
|
|
||||||
|
msgid "Pilot"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "T2SystemId"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "SISO/MISO"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Starting EPG scan"
|
msgid "Starting EPG scan"
|
||||||
msgstr "EPG skaneerimine käivitatud"
|
msgstr "EPG skaneerimine käivitatud"
|
||||||
|
|
||||||
@ -563,6 +572,12 @@ msgstr "CA"
|
|||||||
msgid "Sid"
|
msgid "Sid"
|
||||||
msgstr "Sid"
|
msgstr "Sid"
|
||||||
|
|
||||||
|
msgid "Nid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Tid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Channel settings are not unique!"
|
msgid "Channel settings are not unique!"
|
||||||
msgstr "Kanaliseaded ei ole unikaalsed!"
|
msgstr "Kanaliseaded ei ole unikaalsed!"
|
||||||
|
|
||||||
|
17
po/fi_FI.po
17
po/fi_FI.po
@ -80,6 +80,15 @@ msgstr "Rolloff"
|
|||||||
msgid "StreamId"
|
msgid "StreamId"
|
||||||
msgstr "Lähetetunniste"
|
msgstr "Lähetetunniste"
|
||||||
|
|
||||||
|
msgid "Pilot"
|
||||||
|
msgstr "Pilotti"
|
||||||
|
|
||||||
|
msgid "T2SystemId"
|
||||||
|
msgstr "T2-tunniste"
|
||||||
|
|
||||||
|
msgid "SISO/MISO"
|
||||||
|
msgstr "SISO/MISO"
|
||||||
|
|
||||||
msgid "Starting EPG scan"
|
msgid "Starting EPG scan"
|
||||||
msgstr "Ohjelmaoppaan päivitys aloitettu"
|
msgstr "Ohjelmaoppaan päivitys aloitettu"
|
||||||
|
|
||||||
@ -567,6 +576,12 @@ msgstr "Salaus (CA)"
|
|||||||
msgid "Sid"
|
msgid "Sid"
|
||||||
msgstr "Palvelu-ID"
|
msgstr "Palvelu-ID"
|
||||||
|
|
||||||
|
msgid "Nid"
|
||||||
|
msgstr "Verkko-ID"
|
||||||
|
|
||||||
|
msgid "Tid"
|
||||||
|
msgstr "Lähete-ID"
|
||||||
|
|
||||||
msgid "Channel settings are not unique!"
|
msgid "Channel settings are not unique!"
|
||||||
msgstr "Kanava-asetukset eivät ole yksilölliset!"
|
msgstr "Kanava-asetukset eivät ole yksilölliset!"
|
||||||
|
|
||||||
@ -1427,7 +1442,7 @@ msgstr "TOISTO"
|
|||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Moving dish to %.1f..."
|
msgid "Moving dish to %.1f..."
|
||||||
msgstr "Käännetaan lautasta %.1f..."
|
msgstr "Käännetään lautasta %.1f..."
|
||||||
|
|
||||||
msgid "ST:TNG Panels"
|
msgid "ST:TNG Panels"
|
||||||
msgstr "ST:TNG konsoli"
|
msgstr "ST:TNG konsoli"
|
||||||
|
15
po/fr_FR.po
15
po/fr_FR.po
@ -86,6 +86,15 @@ msgstr "Rolloff"
|
|||||||
msgid "StreamId"
|
msgid "StreamId"
|
||||||
msgstr "StreamId"
|
msgstr "StreamId"
|
||||||
|
|
||||||
|
msgid "Pilot"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "T2SystemId"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "SISO/MISO"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Starting EPG scan"
|
msgid "Starting EPG scan"
|
||||||
msgstr "Mise à jour du guide des programmes"
|
msgstr "Mise à jour du guide des programmes"
|
||||||
|
|
||||||
@ -573,6 +582,12 @@ msgstr "CA"
|
|||||||
msgid "Sid"
|
msgid "Sid"
|
||||||
msgstr "Sid"
|
msgstr "Sid"
|
||||||
|
|
||||||
|
msgid "Nid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Tid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Channel settings are not unique!"
|
msgid "Channel settings are not unique!"
|
||||||
msgstr "Cette chaîne n'est pas unique !"
|
msgstr "Cette chaîne n'est pas unique !"
|
||||||
|
|
||||||
|
15
po/hr_HR.po
15
po/hr_HR.po
@ -78,6 +78,15 @@ msgstr ""
|
|||||||
msgid "StreamId"
|
msgid "StreamId"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Pilot"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "T2SystemId"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "SISO/MISO"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Starting EPG scan"
|
msgid "Starting EPG scan"
|
||||||
msgstr "Poèinjem EPG pretragu"
|
msgstr "Poèinjem EPG pretragu"
|
||||||
|
|
||||||
@ -565,6 +574,12 @@ msgstr "Kodiranje (CA)"
|
|||||||
msgid "Sid"
|
msgid "Sid"
|
||||||
msgstr "Sid"
|
msgstr "Sid"
|
||||||
|
|
||||||
|
msgid "Nid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Tid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Channel settings are not unique!"
|
msgid "Channel settings are not unique!"
|
||||||
msgstr "Postavke programa nisu jedinstvene!"
|
msgstr "Postavke programa nisu jedinstvene!"
|
||||||
|
|
||||||
|
15
po/hu_HU.po
15
po/hu_HU.po
@ -80,6 +80,15 @@ msgstr "Rolloff"
|
|||||||
msgid "StreamId"
|
msgid "StreamId"
|
||||||
msgstr "Stream azonosító"
|
msgstr "Stream azonosító"
|
||||||
|
|
||||||
|
msgid "Pilot"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "T2SystemId"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "SISO/MISO"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Starting EPG scan"
|
msgid "Starting EPG scan"
|
||||||
msgstr "EPG adatok aktualizálása"
|
msgstr "EPG adatok aktualizálása"
|
||||||
|
|
||||||
@ -567,6 +576,12 @@ msgstr "CA"
|
|||||||
msgid "Sid"
|
msgid "Sid"
|
||||||
msgstr "Sid"
|
msgstr "Sid"
|
||||||
|
|
||||||
|
msgid "Nid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Tid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Channel settings are not unique!"
|
msgid "Channel settings are not unique!"
|
||||||
msgstr "Az adóbeállítások nem egyértelműek"
|
msgstr "Az adóbeállítások nem egyértelműek"
|
||||||
|
|
||||||
|
17
po/it_IT.po
17
po/it_IT.po
@ -11,7 +11,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 2.0.0\n"
|
"Project-Id-Version: VDR 2.0.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2013-10-14 11:56+0200\n"
|
"POT-Creation-Date: 2013-11-03 15:59+0100\n"
|
||||||
"PO-Revision-Date: 2013-11-10 23:02+0100\n"
|
"PO-Revision-Date: 2013-11-10 23:02+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"
|
||||||
@ -83,6 +83,15 @@ msgstr "Rolloff"
|
|||||||
msgid "StreamId"
|
msgid "StreamId"
|
||||||
msgstr "StreamId"
|
msgstr "StreamId"
|
||||||
|
|
||||||
|
msgid "Pilot"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "T2SystemId"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "SISO/MISO"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Starting EPG scan"
|
msgid "Starting EPG scan"
|
||||||
msgstr "Inizio scansione EPG"
|
msgstr "Inizio scansione EPG"
|
||||||
|
|
||||||
@ -570,6 +579,12 @@ msgstr "CA"
|
|||||||
msgid "Sid"
|
msgid "Sid"
|
||||||
msgstr "Sid"
|
msgstr "Sid"
|
||||||
|
|
||||||
|
msgid "Nid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Tid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Channel settings are not unique!"
|
msgid "Channel settings are not unique!"
|
||||||
msgstr "Parametri canale non univoci!"
|
msgstr "Parametri canale non univoci!"
|
||||||
|
|
||||||
|
15
po/lt_LT.po
15
po/lt_LT.po
@ -76,6 +76,15 @@ msgstr "Rolloff"
|
|||||||
msgid "StreamId"
|
msgid "StreamId"
|
||||||
msgstr "StreamId"
|
msgstr "StreamId"
|
||||||
|
|
||||||
|
msgid "Pilot"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "T2SystemId"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "SISO/MISO"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Starting EPG scan"
|
msgid "Starting EPG scan"
|
||||||
msgstr "Pradedamas EPG skanavimas"
|
msgstr "Pradedamas EPG skanavimas"
|
||||||
|
|
||||||
@ -563,6 +572,12 @@ msgstr "CA (dekodavimo sistema)"
|
|||||||
msgid "Sid"
|
msgid "Sid"
|
||||||
msgstr "Serviso id"
|
msgstr "Serviso id"
|
||||||
|
|
||||||
|
msgid "Nid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Tid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Channel settings are not unique!"
|
msgid "Channel settings are not unique!"
|
||||||
msgstr "Kanalų nustatymai neunikalūs!"
|
msgstr "Kanalų nustatymai neunikalūs!"
|
||||||
|
|
||||||
|
15
po/mk_MK.po
15
po/mk_MK.po
@ -77,6 +77,15 @@ msgstr "Рол-оф"
|
|||||||
msgid "StreamId"
|
msgid "StreamId"
|
||||||
msgstr "StreamId"
|
msgstr "StreamId"
|
||||||
|
|
||||||
|
msgid "Pilot"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "T2SystemId"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "SISO/MISO"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Starting EPG scan"
|
msgid "Starting EPG scan"
|
||||||
msgstr "Започнувам скенирање на EPG"
|
msgstr "Започнувам скенирање на EPG"
|
||||||
|
|
||||||
@ -564,6 +573,12 @@ msgstr "Кодирање (CA)"
|
|||||||
msgid "Sid"
|
msgid "Sid"
|
||||||
msgstr "Sid"
|
msgstr "Sid"
|
||||||
|
|
||||||
|
msgid "Nid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Tid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Channel settings are not unique!"
|
msgid "Channel settings are not unique!"
|
||||||
msgstr "Уредбите на каналот не се уникатни!"
|
msgstr "Уредбите на каналот не се уникатни!"
|
||||||
|
|
||||||
|
15
po/nl_NL.po
15
po/nl_NL.po
@ -81,6 +81,15 @@ msgstr "Rolloff"
|
|||||||
msgid "StreamId"
|
msgid "StreamId"
|
||||||
msgstr "StreamId"
|
msgstr "StreamId"
|
||||||
|
|
||||||
|
msgid "Pilot"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "T2SystemId"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "SISO/MISO"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Starting EPG scan"
|
msgid "Starting EPG scan"
|
||||||
msgstr "Bezig met starten EPG scan"
|
msgstr "Bezig met starten EPG scan"
|
||||||
|
|
||||||
@ -568,6 +577,12 @@ msgstr "CA"
|
|||||||
msgid "Sid"
|
msgid "Sid"
|
||||||
msgstr "Sid"
|
msgstr "Sid"
|
||||||
|
|
||||||
|
msgid "Nid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Tid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Channel settings are not unique!"
|
msgid "Channel settings are not unique!"
|
||||||
msgstr "Kanaalinstellingen zijn niet uniek!"
|
msgstr "Kanaalinstellingen zijn niet uniek!"
|
||||||
|
|
||||||
|
15
po/nn_NO.po
15
po/nn_NO.po
@ -77,6 +77,15 @@ msgstr ""
|
|||||||
msgid "StreamId"
|
msgid "StreamId"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Pilot"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "T2SystemId"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "SISO/MISO"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Starting EPG scan"
|
msgid "Starting EPG scan"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -564,6 +573,12 @@ msgstr "Kortleser"
|
|||||||
msgid "Sid"
|
msgid "Sid"
|
||||||
msgstr "Sid"
|
msgstr "Sid"
|
||||||
|
|
||||||
|
msgid "Nid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Tid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Channel settings are not unique!"
|
msgid "Channel settings are not unique!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
15
po/pl_PL.po
15
po/pl_PL.po
@ -78,6 +78,15 @@ msgstr "Rolloff"
|
|||||||
msgid "StreamId"
|
msgid "StreamId"
|
||||||
msgstr "StreamId"
|
msgstr "StreamId"
|
||||||
|
|
||||||
|
msgid "Pilot"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "T2SystemId"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "SISO/MISO"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Starting EPG scan"
|
msgid "Starting EPG scan"
|
||||||
msgstr "Rozpoczynam skanowanie EPG"
|
msgstr "Rozpoczynam skanowanie EPG"
|
||||||
|
|
||||||
@ -565,6 +574,12 @@ msgstr "CA"
|
|||||||
msgid "Sid"
|
msgid "Sid"
|
||||||
msgstr "Sid"
|
msgstr "Sid"
|
||||||
|
|
||||||
|
msgid "Nid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Tid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Channel settings are not unique!"
|
msgid "Channel settings are not unique!"
|
||||||
msgstr "Ustawienia kana³u nie s± unikalne!"
|
msgstr "Ustawienia kana³u nie s± unikalne!"
|
||||||
|
|
||||||
|
15
po/pt_PT.po
15
po/pt_PT.po
@ -77,6 +77,15 @@ msgstr "Rolloff"
|
|||||||
msgid "StreamId"
|
msgid "StreamId"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Pilot"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "T2SystemId"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "SISO/MISO"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Starting EPG scan"
|
msgid "Starting EPG scan"
|
||||||
msgstr "A iniciar a busca do EPG"
|
msgstr "A iniciar a busca do EPG"
|
||||||
|
|
||||||
@ -564,6 +573,12 @@ msgstr "CA"
|
|||||||
msgid "Sid"
|
msgid "Sid"
|
||||||
msgstr "Sid"
|
msgstr "Sid"
|
||||||
|
|
||||||
|
msgid "Nid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Tid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Channel settings are not unique!"
|
msgid "Channel settings are not unique!"
|
||||||
msgstr "Parâmetros do canal não são únicos!"
|
msgstr "Parâmetros do canal não são únicos!"
|
||||||
|
|
||||||
|
15
po/ro_RO.po
15
po/ro_RO.po
@ -78,6 +78,15 @@ msgstr "Rolloff"
|
|||||||
msgid "StreamId"
|
msgid "StreamId"
|
||||||
msgstr "Identificator Stream"
|
msgstr "Identificator Stream"
|
||||||
|
|
||||||
|
msgid "Pilot"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "T2SystemId"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "SISO/MISO"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Starting EPG scan"
|
msgid "Starting EPG scan"
|
||||||
msgstr "Pornesc achiziţia EPG"
|
msgstr "Pornesc achiziţia EPG"
|
||||||
|
|
||||||
@ -565,6 +574,12 @@ msgstr "CA (Acces Condiţional)"
|
|||||||
msgid "Sid"
|
msgid "Sid"
|
||||||
msgstr "Sid"
|
msgstr "Sid"
|
||||||
|
|
||||||
|
msgid "Nid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Tid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Channel settings are not unique!"
|
msgid "Channel settings are not unique!"
|
||||||
msgstr "Parametrii canalului nu sunt univoci!"
|
msgstr "Parametrii canalului nu sunt univoci!"
|
||||||
|
|
||||||
|
15
po/ru_RU.po
15
po/ru_RU.po
@ -77,6 +77,15 @@ msgstr "Rolloff"
|
|||||||
msgid "StreamId"
|
msgid "StreamId"
|
||||||
msgstr "StreamId"
|
msgstr "StreamId"
|
||||||
|
|
||||||
|
msgid "Pilot"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "T2SystemId"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "SISO/MISO"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Starting EPG scan"
|
msgid "Starting EPG scan"
|
||||||
msgstr "½ÐçØÝÐî EPG-áÚÐÝØàÞÒÐÝØÕ"
|
msgstr "½ÐçØÝÐî EPG-áÚÐÝØàÞÒÐÝØÕ"
|
||||||
|
|
||||||
@ -564,6 +573,12 @@ msgstr "CA (
|
|||||||
msgid "Sid"
|
msgid "Sid"
|
||||||
msgstr "Sid"
|
msgstr "Sid"
|
||||||
|
|
||||||
|
msgid "Nid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Tid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Channel settings are not unique!"
|
msgid "Channel settings are not unique!"
|
||||||
msgstr "½ÐáâàÞÙÚØ ÚÐÝÐÛÐ ÝÕ ãÝØÚÐÛìÝë!"
|
msgstr "½ÐáâàÞÙÚØ ÚÐÝÐÛÐ ÝÕ ãÝØÚÐÛìÝë!"
|
||||||
|
|
||||||
|
15
po/sk_SK.po
15
po/sk_SK.po
@ -76,6 +76,15 @@ msgstr "Rolloff"
|
|||||||
msgid "StreamId"
|
msgid "StreamId"
|
||||||
msgstr "StreamId"
|
msgstr "StreamId"
|
||||||
|
|
||||||
|
msgid "Pilot"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "T2SystemId"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "SISO/MISO"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Starting EPG scan"
|
msgid "Starting EPG scan"
|
||||||
msgstr "Spú¹»a sa snímanie EPG"
|
msgstr "Spú¹»a sa snímanie EPG"
|
||||||
|
|
||||||
@ -563,6 +572,12 @@ msgstr "CA"
|
|||||||
msgid "Sid"
|
msgid "Sid"
|
||||||
msgstr "Sid"
|
msgstr "Sid"
|
||||||
|
|
||||||
|
msgid "Nid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Tid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Channel settings are not unique!"
|
msgid "Channel settings are not unique!"
|
||||||
msgstr "Nastavenia kanálu nie sú výnimoèné!"
|
msgstr "Nastavenia kanálu nie sú výnimoèné!"
|
||||||
|
|
||||||
|
15
po/sl_SI.po
15
po/sl_SI.po
@ -77,6 +77,15 @@ msgstr "Odpadanje"
|
|||||||
msgid "StreamId"
|
msgid "StreamId"
|
||||||
msgstr "StreamId"
|
msgstr "StreamId"
|
||||||
|
|
||||||
|
msgid "Pilot"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "T2SystemId"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "SISO/MISO"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Starting EPG scan"
|
msgid "Starting EPG scan"
|
||||||
msgstr "Prièenjam EPG-scan"
|
msgstr "Prièenjam EPG-scan"
|
||||||
|
|
||||||
@ -564,6 +573,12 @@ msgstr "CA"
|
|||||||
msgid "Sid"
|
msgid "Sid"
|
||||||
msgstr "Sid"
|
msgstr "Sid"
|
||||||
|
|
||||||
|
msgid "Nid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Tid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Channel settings are not unique!"
|
msgid "Channel settings are not unique!"
|
||||||
msgstr "Nastavitve kanala niso edinstvene!"
|
msgstr "Nastavitve kanala niso edinstvene!"
|
||||||
|
|
||||||
|
15
po/sr_RS.po
15
po/sr_RS.po
@ -77,6 +77,15 @@ msgstr "Rolloff"
|
|||||||
msgid "StreamId"
|
msgid "StreamId"
|
||||||
msgstr "StreamId"
|
msgstr "StreamId"
|
||||||
|
|
||||||
|
msgid "Pilot"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "T2SystemId"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "SISO/MISO"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Starting EPG scan"
|
msgid "Starting EPG scan"
|
||||||
msgstr "Poèinje EPG pretra¾ivanje"
|
msgstr "Poèinje EPG pretra¾ivanje"
|
||||||
|
|
||||||
@ -564,6 +573,12 @@ msgstr "Kodiranje (CA)"
|
|||||||
msgid "Sid"
|
msgid "Sid"
|
||||||
msgstr "Sid"
|
msgstr "Sid"
|
||||||
|
|
||||||
|
msgid "Nid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Tid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Channel settings are not unique!"
|
msgid "Channel settings are not unique!"
|
||||||
msgstr "Postavke kanala nisu jedinstvene!"
|
msgstr "Postavke kanala nisu jedinstvene!"
|
||||||
|
|
||||||
|
15
po/sv_SE.po
15
po/sv_SE.po
@ -80,6 +80,15 @@ msgstr "Rolloff"
|
|||||||
msgid "StreamId"
|
msgid "StreamId"
|
||||||
msgstr "StreamId"
|
msgstr "StreamId"
|
||||||
|
|
||||||
|
msgid "Pilot"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "T2SystemId"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "SISO/MISO"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Starting EPG scan"
|
msgid "Starting EPG scan"
|
||||||
msgstr "Påbörjar EPG-avsökning"
|
msgstr "Påbörjar EPG-avsökning"
|
||||||
|
|
||||||
@ -567,6 +576,12 @@ msgstr "Kortl
|
|||||||
msgid "Sid"
|
msgid "Sid"
|
||||||
msgstr "Sid"
|
msgstr "Sid"
|
||||||
|
|
||||||
|
msgid "Nid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Tid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Channel settings are not unique!"
|
msgid "Channel settings are not unique!"
|
||||||
msgstr "Kanalinställningarna är ej unika!"
|
msgstr "Kanalinställningarna är ej unika!"
|
||||||
|
|
||||||
|
15
po/tr_TR.po
15
po/tr_TR.po
@ -76,6 +76,15 @@ msgstr ""
|
|||||||
msgid "StreamId"
|
msgid "StreamId"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Pilot"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "T2SystemId"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "SISO/MISO"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Starting EPG scan"
|
msgid "Starting EPG scan"
|
||||||
msgstr "EPG tarama baþlýyor"
|
msgstr "EPG tarama baþlýyor"
|
||||||
|
|
||||||
@ -563,6 +572,12 @@ msgstr "CA"
|
|||||||
msgid "Sid"
|
msgid "Sid"
|
||||||
msgstr "Sid"
|
msgstr "Sid"
|
||||||
|
|
||||||
|
msgid "Nid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Tid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Channel settings are not unique!"
|
msgid "Channel settings are not unique!"
|
||||||
msgstr "Kanal ayarlarý belli deðýl!"
|
msgstr "Kanal ayarlarý belli deðýl!"
|
||||||
|
|
||||||
|
15
po/uk_UA.po
15
po/uk_UA.po
@ -77,6 +77,15 @@ msgstr "Крен"
|
|||||||
msgid "StreamId"
|
msgid "StreamId"
|
||||||
msgstr "StreamId"
|
msgstr "StreamId"
|
||||||
|
|
||||||
|
msgid "Pilot"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "T2SystemId"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "SISO/MISO"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Starting EPG scan"
|
msgid "Starting EPG scan"
|
||||||
msgstr "Починаю EPG-сканування"
|
msgstr "Починаю EPG-сканування"
|
||||||
|
|
||||||
@ -564,6 +573,12 @@ msgstr "CA (декодер)"
|
|||||||
msgid "Sid"
|
msgid "Sid"
|
||||||
msgstr "Sid"
|
msgstr "Sid"
|
||||||
|
|
||||||
|
msgid "Nid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Tid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Channel settings are not unique!"
|
msgid "Channel settings are not unique!"
|
||||||
msgstr "Настройки каналу не єдині!"
|
msgstr "Настройки каналу не єдині!"
|
||||||
|
|
||||||
|
15
po/zh_CN.po
15
po/zh_CN.po
@ -78,6 +78,15 @@ msgstr "越零率"
|
|||||||
msgid "StreamId"
|
msgid "StreamId"
|
||||||
msgstr "StreamId"
|
msgstr "StreamId"
|
||||||
|
|
||||||
|
msgid "Pilot"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "T2SystemId"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "SISO/MISO"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Starting EPG scan"
|
msgid "Starting EPG scan"
|
||||||
msgstr "开始节目单扫描"
|
msgstr "开始节目单扫描"
|
||||||
|
|
||||||
@ -565,6 +574,12 @@ msgstr "CA"
|
|||||||
msgid "Sid"
|
msgid "Sid"
|
||||||
msgstr "Sid"
|
msgstr "Sid"
|
||||||
|
|
||||||
|
msgid "Nid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Tid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Channel settings are not unique!"
|
msgid "Channel settings are not unique!"
|
||||||
msgstr "频道设置不是唯一的!"
|
msgstr "频道设置不是唯一的!"
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: recording.c 3.16 2014/02/08 11:16:02 kls Exp $
|
* $Id: recording.c 3.18 2014/03/16 11:09:17 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "recording.h"
|
#include "recording.h"
|
||||||
@ -1237,6 +1237,7 @@ bool cRecording::ChangeName(const char *NewName)
|
|||||||
fileName = strdup(OldFileName);
|
fileName = strdup(OldFileName);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
isOnVideoDirectoryFileSystem = -1; // it might have been moved to a different file system
|
||||||
ClearSortName();
|
ClearSortName();
|
||||||
Recordings.ChangeState();
|
Recordings.ChangeState();
|
||||||
Recordings.TouchUpdate();
|
Recordings.TouchUpdate();
|
||||||
@ -1425,6 +1426,7 @@ bool cRecordings::ScanVideoDir(const char *DirName, bool Foreground, int LinkLev
|
|||||||
if (r->Name()) {
|
if (r->Name()) {
|
||||||
r->NumFrames(); // initializes the numFrames member
|
r->NumFrames(); // initializes the numFrames member
|
||||||
r->FileSizeMB(); // initializes the fileSizeMB member
|
r->FileSizeMB(); // initializes the fileSizeMB member
|
||||||
|
r->IsOnVideoDirectoryFileSystem(); // initializes the isOnVideoDirectoryFileSystem member
|
||||||
if (deleted)
|
if (deleted)
|
||||||
r->deleted = time(NULL);
|
r->deleted = time(NULL);
|
||||||
Lock();
|
Lock();
|
||||||
|
14
remux.c
14
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 3.3 2014/02/21 11:51:55 kls Exp $
|
* $Id: remux.c 3.5 2014/03/08 15:05:35 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "remux.h"
|
#include "remux.h"
|
||||||
@ -272,7 +272,7 @@ uchar cTsPayload::GetByte(void)
|
|||||||
if (data[index] == TS_SYNC_BYTE && index + TS_SIZE <= length) { // to make sure we are at a TS header start and drop incomplete TS packets at the end
|
if (data[index] == TS_SYNC_BYTE && index + TS_SIZE <= length) { // to make sure we are at a TS header start and drop incomplete TS packets at the end
|
||||||
uchar *p = data + index;
|
uchar *p = data + index;
|
||||||
if (TsPid(p) == pid) { // only handle TS packets for the initial PID
|
if (TsPid(p) == pid) { // only handle TS packets for the initial PID
|
||||||
if (numPacketsPid++ > MAX_TS_PACKETS_FOR_VIDEO_FRAME_DETECTION)
|
if (++numPacketsPid > MAX_TS_PACKETS_FOR_VIDEO_FRAME_DETECTION)
|
||||||
return SetEof();
|
return SetEof();
|
||||||
if (TsHasPayload(p)) {
|
if (TsHasPayload(p)) {
|
||||||
if (index > 0 && TsPayloadStart(p)) // checking index to not skip the very first TS packet
|
if (index > 0 && TsPayloadStart(p)) // checking index to not skip the very first TS packet
|
||||||
@ -281,6 +281,8 @@ uchar cTsPayload::GetByte(void)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (TsPid(p) == PATPID)
|
||||||
|
return SetEof(); // caller must see PAT packets in case of index regeneration
|
||||||
else
|
else
|
||||||
numPacketsOther++;
|
numPacketsOther++;
|
||||||
}
|
}
|
||||||
@ -1252,7 +1254,7 @@ uint32_t cH264Parser::GetBits(int Bits)
|
|||||||
uint32_t cH264Parser::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 < 32; z++) // limiting z to no get stuck if GetBit() always returns 0
|
||||||
b = GetBit();
|
b = GetBit();
|
||||||
return (1 << z) - 1 + GetBits(z);
|
return (1 << z) - 1 + GetBits(z);
|
||||||
}
|
}
|
||||||
@ -1288,8 +1290,10 @@ int cH264Parser::Parse(const uchar *Data, int Length, int Pid)
|
|||||||
case nutAccessUnitDelimiter: ParseAccessUnitDelimiter();
|
case nutAccessUnitDelimiter: ParseAccessUnitDelimiter();
|
||||||
gotAccessUnitDelimiter = true;
|
gotAccessUnitDelimiter = true;
|
||||||
break;
|
break;
|
||||||
case nutSequenceParameterSet: ParseSequenceParameterSet();
|
case nutSequenceParameterSet: if (gotAccessUnitDelimiter) {
|
||||||
gotSequenceParameterSet = true;
|
ParseSequenceParameterSet();
|
||||||
|
gotSequenceParameterSet = true;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case nutCodedSliceNonIdr:
|
case nutCodedSliceNonIdr:
|
||||||
case nutCodedSliceIdr: if (gotAccessUnitDelimiter && gotSequenceParameterSet) {
|
case nutCodedSliceIdr: if (gotAccessUnitDelimiter && gotSequenceParameterSet) {
|
||||||
|
25
sdt.c
25
sdt.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: sdt.c 3.2 2014/02/18 10:37:50 kls Exp $
|
* $Id: sdt.c 3.3 2014/03/10 14:42:20 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "sdt.h"
|
#include "sdt.h"
|
||||||
@ -17,19 +17,30 @@
|
|||||||
|
|
||||||
cSdtFilter::cSdtFilter(cPatFilter *PatFilter)
|
cSdtFilter::cSdtFilter(cPatFilter *PatFilter)
|
||||||
{
|
{
|
||||||
|
source = cSource::stNone;
|
||||||
patFilter = PatFilter;
|
patFilter = PatFilter;
|
||||||
Set(0x11, 0x42); // SDT
|
Set(0x11, 0x42); // SDT
|
||||||
}
|
}
|
||||||
|
|
||||||
void cSdtFilter::SetStatus(bool On)
|
void cSdtFilter::SetStatus(bool On)
|
||||||
{
|
{
|
||||||
|
cMutexLock MutexLock(&mutex);
|
||||||
cFilter::SetStatus(On);
|
cFilter::SetStatus(On);
|
||||||
sectionSyncer.Reset();
|
sectionSyncer.Reset();
|
||||||
|
if (!On)
|
||||||
|
source = cSource::stNone;
|
||||||
|
}
|
||||||
|
|
||||||
|
void cSdtFilter::Trigger(int Source)
|
||||||
|
{
|
||||||
|
cMutexLock MutexLock(&mutex);
|
||||||
|
source = Source;
|
||||||
}
|
}
|
||||||
|
|
||||||
void cSdtFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length)
|
void cSdtFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length)
|
||||||
{
|
{
|
||||||
if (!(Source() && Transponder()))
|
cMutexLock MutexLock(&mutex);
|
||||||
|
if (!(source && Transponder()))
|
||||||
return;
|
return;
|
||||||
SI::SDT sdt(Data, false);
|
SI::SDT sdt(Data, false);
|
||||||
if (!sdt.CheckCRCAndParse())
|
if (!sdt.CheckCRCAndParse())
|
||||||
@ -40,9 +51,9 @@ void cSdtFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
|
|||||||
return;
|
return;
|
||||||
SI::SDT::Service SiSdtService;
|
SI::SDT::Service SiSdtService;
|
||||||
for (SI::Loop::Iterator it; sdt.serviceLoop.getNext(SiSdtService, it); ) {
|
for (SI::Loop::Iterator it; sdt.serviceLoop.getNext(SiSdtService, it); ) {
|
||||||
cChannel *channel = Channels.GetByChannelID(tChannelID(Source(), sdt.getOriginalNetworkId(), sdt.getTransportStreamId(), SiSdtService.getServiceId()));
|
cChannel *channel = Channels.GetByChannelID(tChannelID(source, sdt.getOriginalNetworkId(), sdt.getTransportStreamId(), SiSdtService.getServiceId()));
|
||||||
if (!channel)
|
if (!channel)
|
||||||
channel = Channels.GetByChannelID(tChannelID(Source(), 0, Transponder(), SiSdtService.getServiceId()));
|
channel = Channels.GetByChannelID(tChannelID(source, 0, Transponder(), SiSdtService.getServiceId()));
|
||||||
if (channel)
|
if (channel)
|
||||||
channel->SetSeen();
|
channel->SetSeen();
|
||||||
|
|
||||||
@ -66,7 +77,7 @@ void cSdtFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
|
|||||||
sd->serviceName.getText(NameBuf, ShortNameBuf, sizeof(NameBuf), sizeof(ShortNameBuf));
|
sd->serviceName.getText(NameBuf, ShortNameBuf, sizeof(NameBuf), sizeof(ShortNameBuf));
|
||||||
char *pn = compactspace(NameBuf);
|
char *pn = compactspace(NameBuf);
|
||||||
char *ps = compactspace(ShortNameBuf);
|
char *ps = compactspace(ShortNameBuf);
|
||||||
if (!*ps && cSource::IsCable(Source())) {
|
if (!*ps && cSource::IsCable(source)) {
|
||||||
// Some cable providers don't mark short channel names according to the
|
// Some cable providers don't mark short channel names according to the
|
||||||
// standard, but rather go their own way and use "name>short name":
|
// standard, but rather go their own way and use "name>short name":
|
||||||
char *p = strchr(pn, '>'); // fix for UPC Wien
|
char *p = strchr(pn, '>'); // fix for UPC Wien
|
||||||
@ -117,7 +128,7 @@ void cSdtFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
|
|||||||
SI::NVODReferenceDescriptor *nrd = (SI::NVODReferenceDescriptor *)d;
|
SI::NVODReferenceDescriptor *nrd = (SI::NVODReferenceDescriptor *)d;
|
||||||
SI::NVODReferenceDescriptor::Service Service;
|
SI::NVODReferenceDescriptor::Service Service;
|
||||||
for (SI::Loop::Iterator it; nrd->serviceLoop.getNext(Service, it); ) {
|
for (SI::Loop::Iterator it; nrd->serviceLoop.getNext(Service, it); ) {
|
||||||
cChannel *link = Channels.GetByChannelID(tChannelID(Source(), Service.getOriginalNetworkId(), Service.getTransportStream(), Service.getServiceId()));
|
cChannel *link = Channels.GetByChannelID(tChannelID(source, Service.getOriginalNetworkId(), Service.getTransportStream(), Service.getServiceId()));
|
||||||
if (!link && Setup.UpdateChannels >= 4) {
|
if (!link && Setup.UpdateChannels >= 4) {
|
||||||
link = Channels.NewChannel(Channel(), "NVOD", "", "", Service.getOriginalNetworkId(), Service.getTransportStream(), Service.getServiceId());
|
link = Channels.NewChannel(Channel(), "NVOD", "", "", Service.getOriginalNetworkId(), Service.getTransportStream(), Service.getServiceId());
|
||||||
patFilter->Trigger(Service.getServiceId());
|
patFilter->Trigger(Service.getServiceId());
|
||||||
@ -142,6 +153,6 @@ void cSdtFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (sdt.getSectionNumber() == sdt.getLastSectionNumber())
|
if (sdt.getSectionNumber() == sdt.getLastSectionNumber())
|
||||||
Channels.MarkObsoleteChannels(Source(), sdt.getOriginalNetworkId(), sdt.getTransportStreamId());
|
Channels.MarkObsoleteChannels(source, sdt.getOriginalNetworkId(), sdt.getTransportStreamId());
|
||||||
Channels.Unlock();
|
Channels.Unlock();
|
||||||
}
|
}
|
||||||
|
5
sdt.h
5
sdt.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: sdt.h 3.0 2004/01/05 14:30:14 kls Exp $
|
* $Id: sdt.h 3.1 2014/03/10 14:40:54 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __SDT_H
|
#ifndef __SDT_H
|
||||||
@ -15,13 +15,16 @@
|
|||||||
|
|
||||||
class cSdtFilter : public cFilter {
|
class cSdtFilter : public cFilter {
|
||||||
private:
|
private:
|
||||||
|
cMutex mutex;
|
||||||
cSectionSyncer sectionSyncer;
|
cSectionSyncer sectionSyncer;
|
||||||
|
int source;
|
||||||
cPatFilter *patFilter;
|
cPatFilter *patFilter;
|
||||||
protected:
|
protected:
|
||||||
virtual void Process(u_short Pid, u_char Tid, const u_char *Data, int Length);
|
virtual void Process(u_short Pid, u_char Tid, const u_char *Data, int Length);
|
||||||
public:
|
public:
|
||||||
cSdtFilter(cPatFilter *PatFilter);
|
cSdtFilter(cPatFilter *PatFilter);
|
||||||
virtual void SetStatus(bool On);
|
virtual void SetStatus(bool On);
|
||||||
|
void Trigger(int Source);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif //__SDT_H
|
#endif //__SDT_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: skinlcars.c 3.6 2013/11/16 13:20:19 kls Exp $
|
* $Id: skinlcars.c 3.7 2014/03/10 12:04:06 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// "Star Trek: The Next Generation"(R) is a registered trademark of Paramount Pictures,
|
// "Star Trek: The Next Generation"(R) is a registered trademark of Paramount Pictures,
|
||||||
@ -1361,7 +1361,7 @@ void cSkinLCARSDisplayMenu::DrawLiveIndicator(void)
|
|||||||
if (initial || y != lastLiveIndicatorY || Transferring != lastLiveIndicatorTransferring) {
|
if (initial || y != lastLiveIndicatorY || Transferring != lastLiveIndicatorTransferring) {
|
||||||
if (lastLiveIndicatorY >= 0)
|
if (lastLiveIndicatorY >= 0)
|
||||||
osd->DrawRectangle(xs12, lastLiveIndicatorY, xs13 - 1, lastLiveIndicatorY + lineHeight - 1, Theme.Color(clrBackground));
|
osd->DrawRectangle(xs12, lastLiveIndicatorY, xs13 - 1, lastLiveIndicatorY + lineHeight - 1, Theme.Color(clrBackground));
|
||||||
if (y >= 0) {
|
if (y > 0) {
|
||||||
tColor ColorBg = Theme.Color(clrChannelFrameBg);
|
tColor ColorBg = Theme.Color(clrChannelFrameBg);
|
||||||
osd->DrawRectangle(xs12, y, xs12 + lineHeight / 2 - 1, y + lineHeight - 1, ColorBg);
|
osd->DrawRectangle(xs12, y, xs12 + lineHeight / 2 - 1, y + lineHeight - 1, ColorBg);
|
||||||
osd->DrawEllipse (xs12 + lineHeight / 2, y, xs13 - 1, y + lineHeight - 1, ColorBg, 5);
|
osd->DrawEllipse (xs12 + lineHeight / 2, y, xs13 - 1, y + lineHeight - 1, ColorBg, 5);
|
||||||
|
@ -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: sourceparams.c 3.0 2010/03/06 11:13:39 kls Exp $
|
* $Id: sourceparams.c 3.1 2014/03/09 12:03:09 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "sourceparams.h"
|
#include "sourceparams.h"
|
||||||
@ -21,8 +21,8 @@ cSourceParam::cSourceParam(char Source, const char *Description)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
SourceParams.Add(this);
|
SourceParams.Add(this);
|
||||||
if (!strchr("ACST", Source)) // no, it's not "ATSC" ;-)
|
if (!Sources.ContainsSourceType(source))
|
||||||
Sources.Add(new cSource(Source, Description));
|
Sources.Add(new cSource(source, Description));
|
||||||
dsyslog("registered source parameters for '%c - %s'", source, Description);
|
dsyslog("registered source parameters for '%c - %s'", source, Description);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
11
sources.c
11
sources.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: sources.c 3.5 2013/12/28 11:33:08 kls Exp $
|
* $Id: sources.c 3.6 2014/03/09 12:05:42 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "sources.h"
|
#include "sources.h"
|
||||||
@ -124,3 +124,12 @@ cSource *cSources::Get(int Code)
|
|||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool cSources::ContainsSourceType(char SourceType)
|
||||||
|
{
|
||||||
|
for (cSource *p = First(); p; p = Next(p)) {
|
||||||
|
if (cSource::ToChar(p->Code()) == SourceType)
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
@ -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: sources.h 3.2 2013/08/21 10:27:32 kls Exp $
|
* $Id: sources.h 3.3 2014/03/09 11:59:49 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __SOURCES_H
|
#ifndef __SOURCES_H
|
||||||
@ -62,6 +62,7 @@ public:
|
|||||||
class cSources : public cConfig<cSource> {
|
class cSources : public cConfig<cSource> {
|
||||||
public:
|
public:
|
||||||
cSource *Get(int Code);
|
cSource *Get(int Code);
|
||||||
|
bool ContainsSourceType(char SourceType);
|
||||||
};
|
};
|
||||||
|
|
||||||
extern cSources Sources;
|
extern cSources Sources;
|
||||||
|
11
vdr.5
11
vdr.5
@ -8,7 +8,7 @@
|
|||||||
.\" License as specified in the file COPYING that comes with the
|
.\" License as specified in the file COPYING that comes with the
|
||||||
.\" vdr distribution.
|
.\" vdr distribution.
|
||||||
.\"
|
.\"
|
||||||
.\" $Id: vdr.5 3.1 2013/08/11 13:50:42 kls Exp $
|
.\" $Id: vdr.5 3.2 2014/03/16 10:38:31 kls Exp $
|
||||||
.\"
|
.\"
|
||||||
.TH vdr 5 "31 Mar 2013" "2.0" "Video Disk Recorder Files"
|
.TH vdr 5 "31 Mar 2013" "2.0" "Video Disk Recorder Files"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
@ -99,12 +99,15 @@ l l.
|
|||||||
\fBI\fR@Inversion (0, 1)
|
\fBI\fR@Inversion (0, 1)
|
||||||
\fBL\fR@Left circular polarization
|
\fBL\fR@Left circular polarization
|
||||||
\fBM\fR@Modulation (2, 5, 6, 7, 10, 11, 12, 16, 32, 64, 128, 256, 999)
|
\fBM\fR@Modulation (2, 5, 6, 7, 10, 11, 12, 16, 32, 64, 128, 256, 999)
|
||||||
|
\fBN\fR@pilot mode (0, 1, 999)
|
||||||
\fBO\fR@rollOff (0, 20, 25, 35)
|
\fBO\fR@rollOff (0, 20, 25, 35)
|
||||||
\fBP\fR@stream id (0-255)
|
\fBP\fR@stream id (0-255)
|
||||||
|
\fBQ\fR@t2 system id (0-65535)
|
||||||
\fBR\fR@Right circular polarization
|
\fBR\fR@Right circular polarization
|
||||||
\fBS\fR@delivery System (0, 1)
|
\fBS\fR@delivery System (0, 1)
|
||||||
\fBT\fR@Transmission mode (1, 2, 4, 8, 16, 32)
|
\fBT\fR@Transmission mode (1, 2, 4, 8, 16, 32)
|
||||||
\fBV\fR@Vertical polarization
|
\fBV\fR@Vertical polarization
|
||||||
|
\fBX\fR@siso/miso mode (0, 1)
|
||||||
\fBY\fR@hierarchY (0, 1, 2, 4)
|
\fBY\fR@hierarchY (0, 1, 2, 4)
|
||||||
.TE
|
.TE
|
||||||
|
|
||||||
@ -139,6 +142,8 @@ l l.
|
|||||||
\fB256\fR@QAM256 (DVB-C, DVB-T2)
|
\fB256\fR@QAM256 (DVB-C, DVB-T2)
|
||||||
.TE
|
.TE
|
||||||
|
|
||||||
|
\fBPilot mode:\fR The pilot mode (0 = "off", 1 = "on", 999 = "auto") for DVB-S2 multiplex (DVB-S2 only).
|
||||||
|
|
||||||
\fBRolloff:\fR The Nyquist filter rolloff factor for DVB-S (\fB35\fR) and DVB-S2 (\fB35\fR, 25, 20),
|
\fBRolloff:\fR The Nyquist filter rolloff factor for DVB-S (\fB35\fR) and DVB-S2 (\fB35\fR, 25, 20),
|
||||||
35 = 0.35, 25 = 0.25, 20 = 0.20, DVB-S/DVB-S2 default value is 0.35
|
35 = 0.35, 25 = 0.25, 20 = 0.20, DVB-S/DVB-S2 default value is 0.35
|
||||||
|
|
||||||
@ -146,8 +151,12 @@ l l.
|
|||||||
Physical Layer Pipe (PLP) id (\fB0\fR-255) for DVB-T2 multiplex (DVB-S2/DVB-T2 only,
|
Physical Layer Pipe (PLP) id (\fB0\fR-255) for DVB-T2 multiplex (DVB-S2/DVB-T2 only,
|
||||||
with devices that support "multi streaming").
|
with devices that support "multi streaming").
|
||||||
|
|
||||||
|
\fBT2 System id:\fR Unique identifier (\fB0\fR-65535) of T2 system within the DVB network (DVB-T2).
|
||||||
|
|
||||||
\fBTransmission mode:\fR Number of DVB-T OFDM carriers, 32 = 32k, 16 = 16k, 8 = 8k, 4 = 4k, 2 = 2k, 1 = 1k. If in doubt, try 8k.
|
\fBTransmission mode:\fR Number of DVB-T OFDM carriers, 32 = 32k, 16 = 16k, 8 = 8k, 4 = 4k, 2 = 2k, 1 = 1k. If in doubt, try 8k.
|
||||||
|
|
||||||
|
\fBSISO/MISO mode:\fR Specifies the Single-Input/Multiple-Input Single-Output mode (\fB0\fR = SISO, 1 = MISO) (DVB-T2).
|
||||||
|
|
||||||
\fBHierarchy:\fR If set to 1, this transponder uses two streams, high priority and low priority.
|
\fBHierarchy:\fR If set to 1, this transponder uses two streams, high priority and low priority.
|
||||||
If in doubt, try 0 (off). (DVB-T/DVB-T2 only).
|
If in doubt, try 0 (off). (DVB-T/DVB-T2 only).
|
||||||
|
|
||||||
|
9
vdr.c
9
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 3.10 2014/01/26 12:27:51 kls Exp $
|
* $Id: vdr.c 3.11 2014/03/16 12:49:13 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <getopt.h>
|
#include <getopt.h>
|
||||||
@ -34,6 +34,9 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <sys/capability.h>
|
#include <sys/capability.h>
|
||||||
#include <sys/prctl.h>
|
#include <sys/prctl.h>
|
||||||
|
#ifdef SDNOTIFY
|
||||||
|
#include <systemd/sd-daemon.h>
|
||||||
|
#endif
|
||||||
#include <termios.h>
|
#include <termios.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include "audio.h"
|
#include "audio.h"
|
||||||
@ -845,6 +848,10 @@ int main(int argc, char *argv[])
|
|||||||
alarm(WatchdogTimeout); // Initial watchdog timer start
|
alarm(WatchdogTimeout); // Initial watchdog timer start
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef SDNOTIFY
|
||||||
|
sd_notify(0, "READY=1");
|
||||||
|
#endif
|
||||||
|
|
||||||
// Main program loop:
|
// Main program loop:
|
||||||
|
|
||||||
#define DELETE_MENU ((IsInfoMenu &= (Menu == NULL)), delete Menu, Menu = NULL)
|
#define DELETE_MENU ((IsInfoMenu &= (Menu == NULL)), delete Menu, Menu = NULL)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user