Hello community,
here is the log from the commit of package vdr for openSUSE:Factory checked in at 2019-04-01 12:38:34
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/vdr (Old)
and /work/SRC/openSUSE:Factory/.vdr.new.25356 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "vdr"
Mon Apr 1 12:38:34 2019 rev:52 rq:689921 version:2.4.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/vdr/vdr.changes 2019-03-10 09:32:13.372222473 +0100
+++ /work/SRC/openSUSE:Factory/.vdr.new.25356/vdr.changes 2019-04-01 12:38:34.973920997 +0200
@@ -1,0 +2,31 @@
+Sun Mar 24 16:30:20 UTC 2019 - Stefan Seyfried
+
+- add upstream patches:
+ * vdr-2.4.0-22-fix-sort-recordings.diff
+ * vdr-2.4.0-23-fix-patch-16.diff
+ * vdr-2.4.0-24-fix-drop-caps.diff
+ * vdr-2.4.0-25-fix-channels-menu.diff
+ * vdr-2.4.0-26-fix-shared-ca-pids.diff
+- rebase and rename vdr-2.3.9-gcc7.diff => vdr-2.4.0-gcc7+.diff
+
+-------------------------------------------------------------------
+Sat Mar 16 07:31:17 UTC 2019 - seife+obs@b1-systems.com
+
+- add upstream patches:
+ * vdr-2.4.0-08-add-multi-frontend-support.diff
+ * vdr-2.4.0-09-fix-multi-frontend-access.diff
+ * vdr-2.4.0-10-fix-missing-epg.diff
+ * vdr-2.4.0-11-fix-peerdemo-udp-port.diff
+ * vdr-2.4.0-12-fix-empty-pat.diff
+ * vdr-2.4.0-13-fix-shutdown-2.diff
+ * vdr-2.4.0-14-fix-eitscan.diff
+ * vdr-2.4.0-15-fix-skincurses.diff
+ * vdr-2.4.0-16-fix-nit-transponder-processing.diff
+ * vdr-2.4.0-17-fix-nit-sdt-trigger.diff
+ * vdr-2.4.0-19-add-eac3-from-other-sources.diff
+ * vdr-2.4.0-20-fix-logging-inactive-transponders.diff
+ * vdr-2.4.0-21-fix-libsi.diff
+- remove obsolete vdr-2.4.0-use-ncurses5.diff, no more ncurses5
+ buildrequires \O/
+
+-------------------------------------------------------------------
Old:
----
vdr-2.3.9-gcc7.diff
vdr-2.4.0-use-ncurses5.diff
New:
----
vdr-2.4.0-08-add-multi-frontend-support.diff
vdr-2.4.0-09-fix-multi-frontend-access.diff
vdr-2.4.0-10-fix-missing-epg.diff
vdr-2.4.0-11-fix-peerdemo-udp-port.diff
vdr-2.4.0-12-fix-empty-pat.diff
vdr-2.4.0-13-fix-shutdown-2.diff
vdr-2.4.0-14-fix-eitscan.diff
vdr-2.4.0-15-fix-skincurses.diff
vdr-2.4.0-16-fix-nit-transponder-processing.diff
vdr-2.4.0-17-fix-nit-sdt-trigger.diff
vdr-2.4.0-19-add-eac3-from-other-sources.diff
vdr-2.4.0-20-fix-logging-inactive-transponders.diff
vdr-2.4.0-21-fix-libsi.diff
vdr-2.4.0-22-fix-sort-recordings.diff
vdr-2.4.0-23-fix-patch-16.diff
vdr-2.4.0-24-fix-drop-caps.diff
vdr-2.4.0-25-fix-channels-menu.diff
vdr-2.4.0-26-fix-shared-ca-pids.diff
vdr-2.4.0-gcc7+.diff
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ vdr.spec ++++++
--- /var/tmp/diff_new_pack.q4hIIF/_old 2019-04-01 12:38:36.045921513 +0200
+++ /var/tmp/diff_new_pack.q4hIIF/_new 2019-04-01 12:38:36.045921513 +0200
@@ -46,11 +46,11 @@
# from https://www.minidvblinux.de/git/?a=blob&p=vdr&h=6c20bf469703971cadd14f723265042968e38d24&n=16_vdr_wareagleicon.patch
# https://www.minidvblinux.de/git/?a=tree&p=vdr&h=d6462aa15f34fc9de0b74e4f7a4e9e84e56823e4&hb=d2650f877373711350e837aede55a0b0f87904e9
Patch3: 16_vdr_wareagleicon.patch
-#Patch4: vdr-2.2.0-dynamite.diff
+Patch4: vdr-2.4.0-gcc7+.diff
Patch5: vdr-2.3.9-MainMenuHooks-v1_0_1.patch
-Patch7: vdr-2.4.0-use-ncurses5.diff
-Patch8: vdr-2.3.9-gcc7.diff
# "official" patches after release of tarball:
+# curl ftp://ftp.tvdr.de/vdr/Developer/Patches/vdr-2.4/ | \
+# awk '{print "ftp://ftp.tvdr.de/vdr/Developer/Patches/vdr-2.4/"$9}'
Patch101: ftp://ftp.tvdr.de/vdr/Developer/Patches/vdr-2.4/vdr-2.4.0-01-fix-svdrp-modt-recflag.diff
Patch102: ftp://ftp.tvdr.de/vdr/Developer/Patches/vdr-2.4/vdr-2.4.0-02-fix-invalid-locking-sequence.diff
Patch103: ftp://ftp.tvdr.de/vdr/Developer/Patches/vdr-2.4/vdr-2.4.0-03-fix-locking-channel-display.diff
@@ -58,6 +58,24 @@
Patch105: ftp://ftp.tvdr.de/vdr/Developer/Patches/vdr-2.4/vdr-2.4.0-05-fix-shutdown.diff
Patch106: ftp://ftp.tvdr.de/vdr/Developer/Patches/vdr-2.4/vdr-2.4.0-06-fix-channel-switch.diff
Patch107: ftp://ftp.tvdr.de/vdr/Developer/Patches/vdr-2.4/vdr-2.4.0-07-fix-disabling-mtd.diff
+Patch108: ftp://ftp.tvdr.de/vdr/Developer/Patches/vdr-2.4/vdr-2.4.0-08-add-multi-frontend-support.diff
+Patch109: ftp://ftp.tvdr.de/vdr/Developer/Patches/vdr-2.4/vdr-2.4.0-09-fix-multi-frontend-access.diff
+Patch110: ftp://ftp.tvdr.de/vdr/Developer/Patches/vdr-2.4/vdr-2.4.0-10-fix-missing-epg.diff
+Patch111: ftp://ftp.tvdr.de/vdr/Developer/Patches/vdr-2.4/vdr-2.4.0-11-fix-peerdemo-udp-port.diff
+Patch112: ftp://ftp.tvdr.de/vdr/Developer/Patches/vdr-2.4/vdr-2.4.0-12-fix-empty-pat.diff
+Patch113: ftp://ftp.tvdr.de/vdr/Developer/Patches/vdr-2.4/vdr-2.4.0-13-fix-shutdown-2.diff
+Patch114: ftp://ftp.tvdr.de/vdr/Developer/Patches/vdr-2.4/vdr-2.4.0-14-fix-eitscan.diff
+Patch115: ftp://ftp.tvdr.de/vdr/Developer/Patches/vdr-2.4/vdr-2.4.0-15-fix-skincurses.diff
+Patch116: ftp://ftp.tvdr.de/vdr/Developer/Patches/vdr-2.4/vdr-2.4.0-16-fix-nit-transponder-processing.diff
+Patch117: ftp://ftp.tvdr.de/vdr/Developer/Patches/vdr-2.4/vdr-2.4.0-17-fix-nit-sdt-trigger.diff
+Patch119: ftp://ftp.tvdr.de/vdr/Developer/Patches/vdr-2.4/vdr-2.4.0-19-add-eac3-from-other-sources.diff
+Patch120: ftp://ftp.tvdr.de/vdr/Developer/Patches/vdr-2.4/vdr-2.4.0-20-fix-logging-inactive-transponders.diff
+Patch121: ftp://ftp.tvdr.de/vdr/Developer/Patches/vdr-2.4/vdr-2.4.0-21-fix-libsi.diff
+Patch122: ftp://ftp.tvdr.de/vdr/Developer/Patches/vdr-2.4/vdr-2.4.0-22-fix-sort-recordings.diff
+Patch123: ftp://ftp.tvdr.de/vdr/Developer/Patches/vdr-2.4/vdr-2.4.0-23-fix-patch-16.diff
+Patch124: ftp://ftp.tvdr.de/vdr/Developer/Patches/vdr-2.4/vdr-2.4.0-24-fix-drop-caps.diff
+Patch125: ftp://ftp.tvdr.de/vdr/Developer/Patches/vdr-2.4/vdr-2.4.0-25-fix-channels-menu.diff
+Patch126: ftp://ftp.tvdr.de/vdr/Developer/Patches/vdr-2.4/vdr-2.4.0-26-fix-shared-ca-pids.diff
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: doxygen
@@ -70,9 +88,6 @@
BuildRequires: libjpeg-devel
BuildRequires: linux-glibc-devel
BuildRequires: ncurses-devel
-%if 0%{?suse_version} >= 1330
-BuildRequires: ncurses5-devel
-%endif
BuildRequires: pkg-config
BuildRequires: systemd-devel
Requires(pre): /usr/sbin/useradd
@@ -121,22 +136,30 @@
%patch105 -p0
%patch106 -p0
%patch107 -p0
+%patch108 -p0
+%patch109 -p0
+%patch110 -p0
+%patch111 -p0
+%patch112 -p0
+%patch113 -p0
+%patch114 -p0
+%patch115 -p0
+%patch116 -p0
+%patch117 -p0
+%patch119 -p0
+%patch120 -p0
+%patch121 -p0
+%patch122 -p0
+%patch123 -p0
+%patch124 -p0
+%patch125 -p0
+%patch126 -p0
#
%patch1 -p1
%patch2 -p1
%patch3 -p1
-#patch4 -p1
+%patch4 -p1
%patch5 -p1
-#
-## hack to apply patch7 either in rpmbuild if ncurses6 or during "quilt setup"
-case "`rpm -q ncurses-devel`" in
- ncurses-devel-6*) NCURSES6=true ;;
- *) NCURSES6=false ;;
-esac
-if $NCURSES6 || [ "$TEXTDOMAIN" = quilt ]; then
-%patch7 -p1
-fi
-%patch8 -p1
#should be a patch, but anyway...
%if 0%{?suse_version} >= 1330
++++++ vdr-2.4.0-08-add-multi-frontend-support.diff ++++++
++++ 855 lines (skipped)
++++++ vdr-2.4.0-09-fix-multi-frontend-access.diff ++++++
# Fixed accessing the actual frontend on multi frontend devices.
#
--- dvbdevice.c 2018/10/29 12:22:11 5.2
+++ dvbdevice.c 2019/03/10 12:03:20
@@ -571,6 +571,7 @@
bool ProvidesDeliverySystem(int DeliverySystem) const;
bool ProvidesModulation(int System, int StreamId, int Modulation) const;
bool ProvidesFrontend(const cChannel *Channel, bool Activate = false) const;
+ int Frontend(void) const { return frontend; }
int FrontendType(void) const { return frontendType; }
const char *FrontendName(void) { return dvbFrontend->FrontendName(); }
int NumProvidedSystems(void) const { return numDeliverySystems + numModulations; }
@@ -1869,6 +1870,11 @@
return fd;
}
+int cDvbDevice::Frontend(void) const
+{
+ return dvbTuner ? dvbTuner->Frontend() : frontend;
+}
+
bool cDvbDevice::Exists(int Adapter, int Frontend)
{
cString FileName = DvbName(DEV_DVB_FRONTEND, Adapter, Frontend);
--- dvbdevice.h 2018/10/20 11:39:11 5.1
+++ dvbdevice.h 2019/03/10 12:01:15
@@ -189,7 +189,7 @@
cDvbDevice(int Adapter, int Frontend);
virtual ~cDvbDevice();
int Adapter(void) const { return adapter; }
- int Frontend(void) const { return frontend; }
+ int Frontend(void) const;
virtual cString DeviceType(void) const;
virtual cString DeviceName(void) const;
static bool BondDevices(const char *Bondings);
++++++ vdr-2.4.0-10-fix-missing-epg.diff ++++++
# Reverted the change "The EIT filter no longer parses data from "other TS"...". It led to
# missing EPG data on channels from Canal Digital Norway.
#
--- eit.c 2018/03/31 13:40:32 5.0
+++ eit.c 2018/11/15 16:33:58 5.1
@@ -388,8 +388,7 @@
cEitFilter::cEitFilter(void)
{
-//Set(0x12, 0x40, 0xC0); // event info now&next actual/other TS (0x4E/0x4F), future actual/other TS (0x5X/0x6X) // TODO: remove later
- Set(0x12, 0x40, 0xE0); // event info now&next actual/other TS (0x4E/0x4F), future actual TS (0x5X)
+ Set(0x12, 0x40, 0xC0); // event info now&next actual/other TS (0x4E/0x4F), future actual/other TS (0x5X/0x6X)
Set(0x14, 0x70); // TDT
}
@@ -416,8 +415,7 @@
}
switch (Pid) {
case 0x12: {
- //if (Tid >= 0x4E && Tid <= 0x6F) // TODO: remove later
- if (Tid == 0x4E || Tid >= 0x50 && Tid <= 0x5F)
+ if (Tid >= 0x4E && Tid <= 0x6F)
cEIT EIT(sectionSyncerHash, Source(), Tid, Data);
}
break;
++++++ vdr-2.4.0-11-fix-peerdemo-udp-port.diff ++++++
# Fixed opening the UDP port in peerdemo.
#
--- peerdemo 2018/04/10 17:20:58 5.0
+++ peerdemo 2019/03/11 10:28:22
@@ -37,7 +37,7 @@
$UdpPort = $DefaultSvdrpPort;
$TcpSocket = new IO::Socket::INET(Listen => 5, LocalPort => $TcpPort, Proto => "tcp", ReusePort => 1) || die "$!";
-$UdpSocket = new IO::Socket::INET( LocalPort => $UdpPort, Proto => "udp", ReusePort => 1) || die "$!";
+$UdpSocket = new IO::Socket::INET( LocalPort => $UdpPort, Proto => "udp", ReuseAddr => 1) || die "$!";
$SvdrpSelect = new IO::Select($TcpSocket);
setsockopt($UdpSocket, SOL_SOCKET, SO_RCVTIMEO, pack('L!L!', 0, 1000)); # 1ms timeout on UDP socket
++++++ vdr-2.4.0-12-fix-empty-pat.diff ++++++
# Fixed handling PATs that contain no PMTs.
#
--- pat.c 2016/12/23 14:02:07 5.0
+++ pat.c 2019/03/11 13:20:27
@@ -372,7 +372,8 @@
}
if (numPmtEntries > 0 && pmtIndex < 0)
pmtIndex = 0;
- Add(GetPmtPid(pmtIndex), SI::TableIdPMT);
+ if (pmtIndex >= 0)
+ Add(GetPmtPid(pmtIndex), SI::TableIdPMT);
patVersion = pat.getVersionNumber();
timer.Set(PMT_SCAN_TIMEOUT);
}
++++++ vdr-2.4.0-13-fix-shutdown-2.diff ++++++
# Fixed shutdown after user inactivity in case a plugin is keeping the OSD open (cont'd).
#
--- vdr.c 2018/07/16 08:52:40 5.2
+++ vdr.c 2019/03/12 10:01:16
@@ -1514,7 +1514,7 @@
ShutdownHandler.countdown.Cancel();
}
- if (!cRecordControls::Active() && !RecordingsHandler.Active() && (Now - cRemote::LastActivity()) > ACTIVITYTIMEOUT) {
+ if (!cControl::Control() && !cRecordControls::Active() && !RecordingsHandler.Active() && (Now - cRemote::LastActivity()) > ACTIVITYTIMEOUT) {
// Shutdown:
// Check whether VDR will be ready for shutdown in SHUTDOWNWAIT seconds:
time_t Soon = Now + SHUTDOWNWAIT;
++++++ vdr-2.4.0-14-fix-eitscan.diff ++++++
# Fixed processing the last entry in the scan list of the EIT scanner.
#
--- eitscan.c 2015/09/10 11:05:03 5.0
+++ eitscan.c 2019/03/12 11:46:05
@@ -177,7 +177,7 @@
}
}
}
- if (!scanList->Count() || !AnyDeviceSwitched) {
+ if (!AnyDeviceSwitched) {
delete scanList;
scanList = NULL;
if (lastActivity == 0) // this was a triggered scan
++++++ vdr-2.4.0-15-fix-skincurses.diff ++++++
# Changes for ncurses version 6.
#
--- ./PLUGINS/src/skincurses/skincurses.c 2018/04/10 13:01:00 5.0
+++ ./PLUGINS/src/skincurses/skincurses.c 2019/03/12 12:24:34 5.1
@@ -12,7 +12,7 @@
#include
#include
-static const char *VERSION = "2.4.0";
+static const char *VERSION = "2.4.1";
static const char *DESCRIPTION = trNOOP("A text only skin");
static const char *MAINMENUENTRY = NULL;
@@ -127,8 +127,12 @@
void cCursesOsd::RestoreRegion(void)
{
+ int begy, begx;
+ int maxy, maxx;
+ getmaxyx(savedRegion, maxy,maxx);
+ getbegyx(savedRegion, begy,begx);
if (savedRegion) {
- copywin(savedRegion, window, 0, 0, savedRegion->_begy, savedRegion->_begx, savedRegion->_maxy - savedRegion->_begy, savedRegion->_maxx - savedRegion->_begx, false);
+ copywin(savedRegion, window, 0, 0, begy, begx, maxy - begy, maxx - begx, false);
delwin(savedRegion);
savedRegion = NULL;
}
@@ -828,9 +832,13 @@
{
// Initialize any background activities the plugin shall perform.
WINDOW *w = initscr();
+ int begy, begx;
+ int maxy, maxx;
+ getmaxyx(w, maxy,maxx);
+ getbegyx(w, begy,begx);
if (w) {
- ScOsdWidth = w->_maxx - w->_begx + 1;
- ScOsdHeight = w->_maxy - w->_begy + 1;
+ ScOsdWidth = maxx - begx + 1;
+ ScOsdHeight = maxy - begy + 1;
return true;
}
return false;
++++++ vdr-2.4.0-16-fix-nit-transponder-processing.diff ++++++
# Fixed processing transponder data in the NIT.
#
--- nit.c 2018/03/18 10:52:21 5.0
+++ nit.c 2019/03/12 13:01:33
@@ -125,7 +125,6 @@
dtp.SetStreamId(dtpc.StreamId());
//
int transponder = Channel->Transponder();
- found = true;
if (!ISTRANSPONDER(cChannel::Transponder(Frequency, dtp.Polarization()), transponder)) {
for (int n = 0; n < NumFrequencies; n++) {
if (ISTRANSPONDER(cChannel::Transponder(Frequencies[n], dtp.Polarization()), transponder)) {
@@ -134,7 +133,10 @@
}
}
}
- if (ISTRANSPONDER(cChannel::Transponder(Frequency, dtp.Polarization()), Transponder())) // only modify channels if we're actually receiving this transponder
+ if (!ISTRANSPONDER(cChannel::Transponder(Frequency, dtp.Polarization()), transponder))
+ continue; // a channel with obsolete/wrong/other(?) transponder
+ found = true;
+ if (ISTRANSPONDER(transponder, Transponder())) // only modify channels if we're actually receiving this transponder
ChannelsModified |= Channel->SetTransponderData(Source, Frequency, SymbolRate, dtp.ToString('S'));
else if (Channel->Srate() != SymbolRate || strcmp(Channel->Parameters(), dtp.ToString('S')))
forceTransponderUpdate = true; // get us receiving this transponder
@@ -188,7 +190,6 @@
for (cChannel *Channel = Channels->First(); Channel; Channel = Channels->Next(Channel)) {
if (!Channel->GroupSep() && Channel->Source() == Source && Channel->Nid() == ts.getOriginalNetworkId() && Channel->Tid() == ts.getTransportStreamId()) {
int transponder = Channel->Transponder();
- found = true;
if (!ISTRANSPONDER(Frequency / 1000, transponder)) {
for (int n = 0; n < NumFrequencies; n++) {
if (ISTRANSPONDER(Frequencies[n] / 1000, transponder)) {
@@ -197,7 +198,10 @@
}
}
}
- if (ISTRANSPONDER(Frequency / 1000, Transponder())) // only modify channels if we're actually receiving this transponder
+ if (!ISTRANSPONDER(Frequency / 1000000, transponder))
+ continue; // a channel with obsolete/wrong/other(?) transponder
+ found = true;
+ if (ISTRANSPONDER(transponder, Transponder())) // only modify channels if we're actually receiving this transponder
ChannelsModified |= Channel->SetTransponderData(Source, Frequency, SymbolRate, dtp.ToString('C'));
else if (Channel->Srate() != SymbolRate || strcmp(Channel->Parameters(), dtp.ToString('C')))
forceTransponderUpdate = true; // get us receiving this transponder
@@ -254,7 +258,6 @@
dtp.SetTransmission(dtpc.Transmission());
//
int transponder = Channel->Transponder();
- found = true;
if (!ISTRANSPONDER(Frequency / 1000000, transponder)) {
for (int n = 0; n < NumFrequencies; n++) {
if (ISTRANSPONDER(Frequencies[n] / 1000000, transponder)) {
@@ -263,7 +266,10 @@
}
}
}
- if (ISTRANSPONDER(Frequency / 1000000, Transponder())) // only modify channels if we're actually receiving this transponder
+ if (!ISTRANSPONDER(Frequency / 1000000, transponder))
+ continue; // a channel with obsolete/wrong/other(?) transponder
+ found = true;
+ if (ISTRANSPONDER(transponder, Transponder())) // only modify channels if we're actually receiving this transponder
ChannelsModified |= Channel->SetTransponderData(Source, Frequency, 0, dtp.ToString('T'));
else if (strcmp(Channel->Parameters(), dtp.ToString('T')))
forceTransponderUpdate = true; // get us receiving this transponder
++++++ vdr-2.4.0-17-fix-nit-sdt-trigger.diff ++++++
# Fixed triggering the SDT filter when parsing the NIT.
#
--- nit.c 2019/03/12 13:01:33 5.1
+++ nit.c 2019/03/12 14:00:52
@@ -153,8 +153,6 @@
}
}
}
- if (ISTRANSPONDER(cChannel::Transponder(Frequency, dtp.Polarization()), Transponder()))
- sdtFilter->Trigger(Source);
}
break;
case SI::S2SatelliteDeliverySystemDescriptorTag: {
@@ -218,8 +216,6 @@
}
}
}
- if (ISTRANSPONDER(Frequency / 1000, Transponder()))
- sdtFilter->Trigger(Source);
}
break;
case SI::TerrestrialDeliverySystemDescriptorTag: {
@@ -286,8 +282,6 @@
}
}
}
- if (ISTRANSPONDER(Frequency / 1000000, Transponder()))
- sdtFilter->Trigger(Source);
}
break;
case SI::ExtensionDescriptorTag: {
@@ -367,5 +361,9 @@
delete d;
}
}
+ if (nit.getSectionNumber() == nit.getLastSectionNumber()) {
+ dbgnit(" trigger sdtFilter for current tp %d\n", Transponder());
+ sdtFilter->Trigger(Source());
+ }
StateKey.Remove(ChannelsModified);
}
++++++ vdr-2.4.0-19-add-eac3-from-other-sources.diff ++++++
# Added support for EAC3 audio from other sources.
#
--- pat.c 2019/03/11 13:20:27 5.1
+++ pat.c 2019/03/15 10:14:35
@@ -545,6 +545,7 @@
}
// fall through
case 0x81: // STREAMTYPE_USER_PRIVATE
+ case 0x87: // eac3
if (Setup.StandardCompliance == STANDARD_ANSISCTE) { // ATSC A/53 AUDIO (ANSI/SCTE 57)
char lang[MAXLANGCODE1] = { 0 };
SI::Descriptor *d;
@@ -575,7 +576,8 @@
break;
}
// fall through
- case 0x83 ... 0xFF: // STREAMTYPE_USER_PRIVATE
+ case 0x83 ... 0x86: // STREAMTYPE_USER_PRIVATE
+ case 0x88 ... 0xFF: // STREAMTYPE_USER_PRIVATE
{
char lang[MAXLANGCODE1] = { 0 };
bool IsAc3 = false;
--- remux.c 2017/04/29 12:25:09 5.0
+++ remux.c 2019/03/15 10:14:35
@@ -839,9 +839,11 @@
break;
case 0x81: // STREAMTYPE_USER_PRIVATE - AC3 audio for ATSC and BD
case 0x82: // STREAMTYPE_USER_PRIVATE - DTS audio for BD
+ case 0x87: // eac3
{
dbgpatpmt(" %s",
stream.getStreamType() == 0x81 ? "AC3" :
+ stream.getStreamType() == 0x87 ? "AC3" :
stream.getStreamType() == 0x82 ? "DTS" : "");
char lang[MAXLANGCODE1] = { 0 };
SI::Descriptor *d;
++++++ vdr-2.4.0-20-fix-logging-inactive-transponders.diff ++++++
# No longer logging tuning timeouts for transponders that are announced in the NIT but
# are not currently broadcasting.
#
--- dvbdevice.c 2019/03/10 12:03:20 5.3
+++ dvbdevice.c 2019/03/15 14:49:44
@@ -1711,7 +1711,8 @@
lastDiseqc = NULL;
lastSource = 0;
if (time(NULL) - lastTimeoutReport > 60) { // let's not get too many of these
- isyslog("frontend %d/%d timed out while tuning to channel %d (%s), tp %d", adapter, frontend, channel.Number(), channel.Name(), channel.Transponder());
+ if (channel.Number()) // no need to log this for transponders that are announced in the NIT but are not currently broadcasting
+ isyslog("frontend %d/%d timed out while tuning to channel %d (%s), tp %d", adapter, frontend, channel.Number(), channel.Name(), channel.Transponder());
lastTimeoutReport = time(NULL);
}
continue;
++++++ vdr-2.4.0-21-fix-libsi.diff ++++++
# Fixed processing SI::T2DeliverySystemDescriptor when typecasting it over an
# SI::ExtensionDescriptor.
#
--- ./libsi/descriptor.c 2013/10/30 10:16:18 5.0
+++ ./libsi/descriptor.c 2019/03/15 16:12:43
@@ -870,6 +870,11 @@
void ExtensionDescriptor::Parse() {
int offset=0;
data.setPointerAndOffset<const descr_extension>(s, offset);
+ extended_data_flag = s->descriptor_length > 0x04;
+}
+
+int ExtensionDescriptor::getExtendedDataFlag() const {
+ return extended_data_flag;
}
int ExtensionDescriptor::getExtensionDescriptorTag() const {
--- ./libsi/descriptor.h 2014/02/08 12:44:17 5.0
+++ ./libsi/descriptor.h 2019/03/15 16:12:09
@@ -529,11 +529,13 @@
class ExtensionDescriptor : public Descriptor {
public:
+ int getExtendedDataFlag() const;
int getExtensionDescriptorTag() const;
protected:
virtual void Parse();
private:
const descr_extension *s;
+ int extended_data_flag;
};
class T2DeliverySystemDescriptor : public Descriptor {
++++++ vdr-2.4.0-22-fix-sort-recordings.diff ++++++
--- recording.c 2018/03/17 10:56:13 5.0
+++ recording.c 2019/03/17 16:01:13
@@ -1022,9 +1022,9 @@
{
cRecording *r = (cRecording *)&ListObject;
if (Setup.RecSortingDirection == rsdAscending)
- return strcasecmp(SortName(), r->SortName());
+ return strcmp(SortName(), r->SortName());
else
- return strcasecmp(r->SortName(), SortName());
+ return strcmp(r->SortName(), SortName());
}
bool cRecording::IsInPath(const char *Path) const
++++++ vdr-2.4.0-23-fix-patch-16.diff ++++++
# Fixed a copy/paste error in patch #16.
#
--- nit.c 2019/03/12 14:00:52 5.2
+++ nit.c 2019/03/18 10:29:09
@@ -196,7 +196,7 @@
}
}
}
- if (!ISTRANSPONDER(Frequency / 1000000, transponder))
+ if (!ISTRANSPONDER(Frequency / 1000, transponder))
continue; // a channel with obsolete/wrong/other(?) transponder
found = true;
if (ISTRANSPONDER(transponder, Transponder())) // only modify channels if we're actually receiving this transponder
++++++ vdr-2.4.0-24-fix-drop-caps.diff ++++++
# Fixed dropping capabilities in case cap_sys_time is not available.
#
--- vdr.c 2019/03/12 10:01:16 5.3
+++ vdr.c 2019/03/18 11:17:07 5.4
@@ -126,7 +126,25 @@
static bool DropCaps(void)
{
// drop all capabilities except selected ones
- cap_t caps = cap_from_text("= cap_sys_nice,cap_sys_time,cap_net_raw=ep");
+ cap_t caps_all = cap_get_proc();
+ if (!caps_all) {
+ fprintf(stderr, "vdr: cap_get_proc failed: %s\n", strerror(errno));
+ return false;
+ }
+ char *caps_text = cap_to_text(caps_all, NULL);
+ if (!caps_text) {
+ fprintf(stderr, "vdr: cap_to_text failed: %s\n", strerror(errno));
+ return false;
+ }
+ if (cap_free(caps_all)) {
+ fprintf(stderr, "vdr: cap_free failed: %s\n", strerror(errno));
+ return false;
+ }
+ cap_t caps;
+ if (strstr(caps_text,"cap_sys_time"))
+ caps = cap_from_text("= cap_sys_nice,cap_sys_time,cap_net_raw=ep");
+ else
+ caps = cap_from_text("= cap_sys_nice,cap_net_raw=ep");
if (!caps) {
fprintf(stderr, "vdr: cap_from_text failed: %s\n", strerror(errno));
return false;
++++++ vdr-2.4.0-25-fix-channels-menu.diff ++++++
# Fixed updating the cursor position when switching channels with the Channel+/- keys
# while the Channels menu is open.
#
--- menu.c 2018/07/16 09:29:57 5.4
+++ menu.c 2019/03/18 16:14:06 5.5
@@ -576,7 +576,7 @@
break;
default:
if (state == osUnknown) {
- switch (Key) {
+ switch (int(Key)) {
case k0 ... k9:
return Number(Key);
case kOk: return Switch();
@@ -586,6 +586,20 @@
case kBlue: if (!HasSubMenu())
Mark();
break;
+ case kChanUp|k_Repeat:
+ case kChanUp:
+ case kChanDn|k_Repeat:
+ case kChanDn: {
+ LOCK_CHANNELS_READ;
+ int CurrentChannelNr = cDevice::CurrentChannel();
+ for (cMenuChannelItem *ci = (cMenuChannelItem *)First(); ci; ci = (cMenuChannelItem *)ci->Next()) {
+ if (!ci->Channel()->GroupSep() && ci->Channel()->Number() == CurrentChannelNr) {
+ SetCurrent(ci);
+ Display();
+ break;
+ }
+ }
+ }
default: break;
}
}
++++++ vdr-2.4.0-26-fix-shared-ca-pids.diff ++++++
# Fixed handling shared CA pids.
#
--- ci.c 2018/09/23 10:17:20 5.1
+++ ci.c 2019/03/19 14:58:06
@@ -2505,8 +2505,10 @@
if (GetCaPids(source, transponder, p->programNumber, CaSystemIds, MAXRECEIVEPIDS + 1, CaPids) > 0) {
if (Active)
caPidReceiver->AddPids(CaPids);
- else
+ else {
+ KeepSharedCaPids(p->programNumber, CaSystemIds, CaPids);
caPidReceiver->DelPids(CaPids);
+ }
}
}
if (RepliesToQuery())
@@ -2522,6 +2524,43 @@
}
}
+void cCamSlot::KeepSharedCaPids(int ProgramNumber, const int *CaSystemIds, int *CaPids)
+{
+ int numPids = 0;
+ int *pCaPids = CaPids;
+ while (*pCaPids) {
+ numPids++;
+ pCaPids++;
+ }
+ if (numPids <= 0)
+ return;
+ int CaPids2[MAXRECEIVEPIDS + 1];
+ for (cCiCaProgramData *p = caProgramList.First(); p; p = caProgramList.Next(p)) {
+ if (p->programNumber != ProgramNumber) {
+ if (GetCaPids(source, transponder, p->programNumber, CaSystemIds, MAXRECEIVEPIDS + 1, CaPids2) > 0) {
+ int *pCaPids2 = CaPids2;
+ while (*pCaPids2) {
+ pCaPids = CaPids;
+ while (*pCaPids) {
+ if (*pCaPids == *pCaPids2) {
+ dsyslog("CAM %d: keeping shared CA pid %d", SlotNumber(), *pCaPids);
+ // To remove *pCaPids from CaPids we overwrite it with the last valie in the list, and then strip the last value:
+ *pCaPids = CaPids[numPids - 1];
+ numPids--;
+ CaPids[numPids] = 0;
+ if (numPids <= 0)
+ return;
+ }
+ else
+ pCaPids++;
+ }
+ pCaPids2++;
+ }
+ }
+ }
+ }
+}
+
void cCamSlot::SendCaPmts(cCiCaPmtList &CaPmtList)
{
cMutexLock MutexLock(&mutex);
--- ci.h 2018/03/17 12:17:37 5.0
+++ ci.h 2019/03/17 17:41:17
@@ -254,6 +254,7 @@
cList<cCiCaProgramData> caProgramList;
bool mtdAvailable;
cMtdHandler *mtdHandler;
+ void KeepSharedCaPids(int ProgramNumber, const int *CaSystemIds, int *CaPids);
void NewConnection(void);
void DeleteAllConnections(void);
void Process(cTPDU *TPDU = NULL);
++++++ vdr-2.4.0-gcc7+.diff ++++++
Index: b/osdbase.c
===================================================================
--- a/osdbase.c
+++ b/osdbase.c
@@ -519,7 +519,7 @@ eOSState cOsdMenu::HotKey(eKeys Key)
const char *s = item->Text();
i = 0;
item_nr = 0;
- if (s && (s = skipspace(s)) != '\0' && '0' <= s[i] && s[i] <= '9') {
+ if (s && (s = skipspace(s))[0] != '\0' && '0' <= s[i] && s[i] <= '9') {
do {
item_nr = item_nr * 10 + (s[i] - '0');
}