Merge pull request #2332 from CvH/9.0-vdr-2.3.x

VDR 2.3.x
This commit is contained in:
Christian Hewitt 2018-02-13 18:18:11 +04:00 committed by GitHub
commit 9e059c4e5f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
60 changed files with 828 additions and 1528 deletions

View File

@ -0,0 +1,50 @@
################################################################################
# This file is part of LibreELEC - https://libreelec.tv
# Copyright (C) 2017-present Team LibreELEC
#
# LibreELEC is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# LibreELEC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
################################################################################
PKG_NAME="vdr-plugin-ddci2"
PKG_VERSION="05dd988"
PKG_SHA256="b8ed2787e9140eb00a68397eaeb14862ba88a6e73480dc3220a098faffb14833"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="https://github.com/jasmin-j/vdr-plugin-ddci2"
PKG_URL="https://github.com/jasmin-j/vdr-plugin-ddci2/archive/$PKG_VERSION.tar.gz"
PKG_DEPENDS_TARGET="toolchain vdr"
PKG_SECTION="multimedia"
PKG_SHORTDESC="Support for stand alone CI by Digital Devices."
PKG_LONGDESC="Support for stand alone CI by Digital Devices."
PKG_TOOLCHAIN="manual"
make_target() {
VDR_DIR=$(get_build_dir vdr)
export PKG_CONFIG_PATH=$VDR_DIR:$PKG_CONFIG_PATH
export CPLUS_INCLUDE_PATH=$VDR_DIR/include
make \
LIBDIR="." \
LOCDIR="./locale" \
all
}
post_make_target() {
VDR_DIR=$(get_build_dir vdr)
VDR_APIVERSION=`sed -ne '/define APIVERSION/s/^.*"\(.*\)".*$/\1/p' $VDR_DIR/config.h`
LIB_NAME=lib${PKG_NAME/-plugin/}
cp --remove-destination $PKG_BUILD/${LIB_NAME}.so $PKG_BUILD/${LIB_NAME}.so.${VDR_APIVERSION}
$STRIP libvdr-*.so*
}

View File

@ -1,19 +1,20 @@
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# This file is part of LibreELEC - https://libreelec.tv
# Copyright (C) 2016-present Team LibreELEC
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
#
# OpenELEC is free software: you can redistribute it and/or modify
# LibreELEC is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# OpenELEC is distributed in the hope that it will be useful,
# LibreELEC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenELEC. If not, see <http://www.gnu.org/licenses/>.
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
################################################################################
PKG_NAME="vdr-plugin-dummydevice"
@ -26,8 +27,9 @@ PKG_URL="http://phivdr.dyndns.org/vdr/vdr-dummydevice/${PKG_NAME/-plugin/}-$PKG_
PKG_SOURCE_DIR="dummydevice-${PKG_VERSION}"
PKG_DEPENDS_TARGET="toolchain vdr"
PKG_SECTION="multimedia"
PKG_SHORTDESC="vdr dummydevice plugin"
PKG_LONGDESC="vdr dummydevice plugin"
PKG_SHORTDESC="This plugin can be used to run vdr as recording server without any output devices."
PKG_LONGDESC="This plugin can be used to run vdr as recording server without any output devices."
PKG_TOOLCHAIN="manual"
make_target() {
VDR_DIR=$(get_build_dir vdr)
@ -46,9 +48,4 @@ post_make_target() {
LIB_NAME=lib${PKG_NAME/-plugin/}
cp --remove-destination ${LIB_NAME}.so ${LIB_NAME}.so.${VDR_APIVERSION}
$STRIP libvdr-*.so*
}
makeinstall_target() {
: # installation not needed, done by create-addon script
}

View File

@ -1,37 +1,34 @@
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# This file is part of LibreELEC - https://libreelec.tv
# Copyright (C) 2016-present Team LibreELEC
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
#
# OpenELEC is free software: you can redistribute it and/or modify
# LibreELEC is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# OpenELEC is distributed in the hope that it will be useful,
# LibreELEC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenELEC. If not, see <http://www.gnu.org/licenses/>.
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
################################################################################
PKG_NAME="vdr-plugin-dvbapi"
PKG_VERSION="d7c7587"
PKG_SHA256="2b85a086aedf55246c5e8ee7d41648318cbb77b49d00e638d20b0737e33d9451"
PKG_VERSION="7d51cc4"
PKG_SHA256="b16840574802581950343942559797aeccbc4a8fc216901ad0cea42f420bfd7c"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="https://github.com/manio/vdr-plugin-dvbapi"
PKG_URL="https://github.com/manio/vdr-plugin-dvbapi/archive/$PKG_VERSION.tar.gz"
PKG_DEPENDS_TARGET="toolchain vdr libdvbcsa"
PKG_SECTION="multimedia"
PKG_SHORTDESC="TV"
PKG_LONGDESC="TV"
pre_make_target() {
# dont build parallel
MAKEFLAGS=-j1
}
PKG_SHORTDESC="VDR dvbapi plugin for use with OSCam"
PKG_LONGDESC="VDR dvbapi plugin for use with OSCam"
PKG_TOOLCHAIN="manual"
make_target() {
VDR_DIR=$(get_build_dir vdr)
@ -51,9 +48,4 @@ post_make_target() {
LIB_NAME=lib${PKG_NAME/-plugin/}
cp --remove-destination $PKG_BUILD/${LIB_NAME}.so $PKG_BUILD/${LIB_NAME}.so.${VDR_APIVERSION}
$STRIP libvdr-*.so*
}
makeinstall_target() {
: # installation not needed, done by create-addon script
}

View File

@ -1,5 +1,3 @@
diff --git a/Makefile b/Makefile
index d18b016..278af2b 100644
--- a/Makefile
+++ b/Makefile
@@ -156,7 +156,7 @@ libdvbapi-dvbufs9xx.so: device-ufs9xx.o

View File

@ -1,27 +0,0 @@
From 7d51cc457823156d446d06c6ae40f850958fa735 Mon Sep 17 00:00:00 2001
From: Mariusz Bialonczyk <manio@skyboo.net>
Date: Sat, 25 Nov 2017 18:57:08 +0100
Subject: [PATCH] Fix compilation for kernels >= 4.14
Closes #122
---
CA.h | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/CA.h b/CA.h
index 7130be6..019cd1c 100644
--- a/CA.h
+++ b/CA.h
@@ -9,4 +9,12 @@ typedef struct ca_descr_aes {
unsigned char cw[16];
} ca_descr_aes_t;
+#ifndef CA_SET_PID /* removed in kernel 4.14 */
+typedef struct ca_pid {
+ unsigned int pid;
+ int index; /* -1 == disable */
+} ca_pid_t;
+#define CA_SET_PID _IOW('o', 135, struct ca_pid)
#endif
+
+#endif // __CA_H

View File

@ -1,32 +1,34 @@
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# This file is part of LibreELEC - https://libreelec.tv
# Copyright (C) 2016-present Team LibreELEC
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
#
# OpenELEC is free software: you can redistribute it and/or modify
# LibreELEC is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# OpenELEC is distributed in the hope that it will be useful,
# LibreELEC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenELEC. If not, see <http://www.gnu.org/licenses/>.
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
################################################################################
PKG_NAME="vdr-plugin-eepg"
PKG_VERSION="9cd9a75"
PKG_SHA256="b5c21e083a0d78251028de55dfb59b47df9db88cbbb811f39e913c2fb4e63ba6"
PKG_VERSION="584d766"
PKG_SHA256="0ad19af6bcfb5f7de05814dfcb4ab18bb4f705fdbe60b11ab7dbf72cf0d85231"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="http://projects.vdr-developer.org/projects/plg-eepg"
PKG_URL="http://projects.vdr-developer.org/git/vdr-plugin-eepg.git/snapshot/$PKG_NAME-$PKG_VERSION.tar.bz2"
PKG_URL="https://github.com/vdr-projects/vdr-plugin-eepg/archive/$PKG_VERSION.tar.gz"
PKG_DEPENDS_TARGET="toolchain vdr"
PKG_SECTION="multimedia"
PKG_SHORTDESC="vdr-plugin-eepg"
PKG_LONGDESC="This plugin parses the Extended (2 to 10 day) EPG data which is send by providers on their portal channels. This EEPG data is transmitted in a non-standard format on a non-standard PID."
PKG_LONGDESC="This plugin parses the Extended (2 to 10 day) EPG data which is send by providers on their portal channels."
PKG_TOOLCHAIN="manual"
make_target() {
VDR_DIR=$(get_build_dir vdr)
@ -45,9 +47,4 @@ post_make_target() {
LIB_NAME=lib${PKG_NAME/-plugin/}
cp --remove-destination $PKG_BUILD/${LIB_NAME}.so $PKG_BUILD/${LIB_NAME}.so.${VDR_APIVERSION}
$STRIP libvdr-*.so*
}
makeinstall_target() {
: # installation not needed, done by create-addon script
}

View File

@ -1,32 +1,34 @@
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# This file is part of LibreELEC - https://libreelec.tv
# Copyright (C) 2016-present Team LibreELEC
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
#
# OpenELEC is free software: you can redistribute it and/or modify
# LibreELEC is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# OpenELEC is distributed in the hope that it will be useful,
# LibreELEC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenELEC. If not, see <http://www.gnu.org/licenses/>.
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
################################################################################
PKG_NAME="vdr-plugin-epgfixer"
PKG_VERSION="1ad4aaf"
PKG_SHA256="032f0a0c238208e87c295d5fec04cdcf0fffe041e2245bc678811e1072a95b62"
PKG_SHA256="b109c1040e54a2499c1d4c650d7f02cdc7b647af2133839af227a8496c58281e"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="http://projects.vdr-developer.org/projects/plg-epgfixer"
PKG_URL="http://projects.vdr-developer.org/git/vdr-plugin-epgfixer.git/snapshot/$PKG_NAME-$PKG_VERSION.tar.bz2"
PKG_URL="https://github.com/vdr-projects/vdr-plugin-epgfixer/archive/$PKG_VERSION.tar.gz"
PKG_DEPENDS_TARGET="toolchain vdr pcre"
PKG_SECTION="multimedia"
PKG_SHORTDESC="vdr-plugin-epgfixer"
PKG_SHORTDESC="Plugin for modifying EPG data using regular expressions."
PKG_LONGDESC="Plugin for modifying EPG data using regular expressions."
PKG_TOOLCHAIN="manual"
make_target() {
VDR_DIR=$(get_build_dir vdr)
@ -45,9 +47,4 @@ post_make_target() {
LIB_NAME=lib${PKG_NAME/-plugin/}
cp --remove-destination $PKG_BUILD/${LIB_NAME}.so $PKG_BUILD/${LIB_NAME}.so.${VDR_APIVERSION}
$STRIP libvdr-*.so*
}
makeinstall_target() {
: # installation not needed, done by create-addon script
}

View File

@ -1,6 +1,5 @@
diff -Naur vdr-plugin-epgfixer-1ad4aaf/Makefile vdr-plugin-epgfixer-1ad4aaf.patch/Makefile
--- vdr-plugin-epgfixer-1ad4aaf/Makefile 2015-01-01 11:15:50.000000000 +0100
+++ vdr-plugin-epgfixer-1ad4aaf.patch/Makefile 2016-01-07 04:40:37.742655989 +0100
--- a/Makefile
+++ b/Makefile
@@ -70,8 +70,8 @@
OBJS = $(PLUGIN).o blacklist.o charset.o config.o epgclone.o epghandler.o regexp.o setup_menu.o tools.o

View File

@ -0,0 +1,132 @@
patches taken from https://projects.vdr-developer.org/projects/plg-epgfixer/issues
From: glenvt18 <glenvt18@gmail.com>
Date: Tue, 24 May 2016 02:36:55 +0300
Subject: [PATCH 1/2] Fix compiling against VDR >= 2.3.1
--- a/epgclone.c
+++ b/epgclone.c
@@ -49,9 +49,16 @@ void cEpgClone::CloneEvent(cEvent *Source, cEvent *Dest) {
Dest->SetSeen();
tChannelID channelID;
if (dest_num) {
+#if VDRVERSNUM >= 20301
+ LOCK_CHANNELS_READ;
+ const cChannel *dest_chan = Channels->GetByNumber(dest_num);
+ if (dest_chan)
+ channelID = Channels->GetByNumber(dest_num)->GetChannelID();
+#else
cChannel *dest_chan = Channels.GetByNumber(dest_num);
if (dest_chan)
channelID = Channels.GetByNumber(dest_num)->GetChannelID();
+#endif
else
channelID = tChannelID::InvalidID;
}
diff --git a/setup_menu.c b/setup_menu.c
index 8b60870..fcba6b1 100644
--- a/setup_menu.c
+++ b/setup_menu.c
@@ -264,9 +264,21 @@ eOSState cMenuSetupEpgfixer::ProcessKey(eKeys Key)
break;
case kBlue:
Skins.Message(mtInfo, tr("Clearing EPG data..."));
+#if VDRVERSNUM >= 20301
+ {
+ LOCK_TIMERS_WRITE;
+ LOCK_SCHEDULES_WRITE;
+ for (cTimer *Timer = Timers->First(); Timer; Timer = Timers->Next(Timer))
+ Timer->SetEvent(NULL);
+ for (cSchedule *Schedule = Schedules->First(); Schedule; Schedule = Schedules->Next(Schedule))
+ Schedule->Cleanup(INT_MAX);
+ }
+ cEitFilter::SetDisableUntil(time(NULL) + 10);
+#else
cEitFilter::SetDisableUntil(time(NULL) + 10);
if (cSchedules::ClearAll())
cEitFilter::SetDisableUntil(time(NULL) + 10);
+#endif
Skins.Message(mtInfo, NULL);
state = osContinue;
break;
diff --git a/tools.c b/tools.c
index 9c9133d..35c4b53 100644
--- a/tools.c
+++ b/tools.c
@@ -463,14 +463,26 @@ cAddEventThread::~cAddEventThread(void)
void cAddEventThread::Action(void)
{
SetPriority(19);
- while (Running() && !LastHandleEvent.TimedOut()) {
+ for (; Running() && !LastHandleEvent.TimedOut(); cCondWait::SleepMs(10)) {
+ if (list->First() == NULL)
+ continue;
cAddEventListItem *e = NULL;
+#if VDRVERSNUM >= 20301
+ cStateKey StateKey;
+ cSchedules *schedules = cSchedules::GetSchedulesWrite(StateKey, 10);
+ LOCK_CHANNELS_READ;
+#else
cSchedulesLock SchedulesLock(true, 10);
cSchedules *schedules = (cSchedules *)cSchedules::Schedules(SchedulesLock);
+#endif
Lock();
while (schedules && (e = list->First()) != NULL) {
tChannelID chanid = e->GetChannelID();
+#if VDRVERSNUM >= 20301
+ const cChannel *chan = Channels->GetByChannelID(chanid);
+#else
cChannel *chan = Channels.GetByChannelID(chanid);
+#endif
if (!chan) {
error("Destination channel %s not found for cloning!", *chanid.ToString());
}
@@ -485,7 +497,10 @@ void cAddEventThread::Action(void)
list->Del(e);
}
Unlock();
- cCondWait::SleepMs(10);
+#if VDRVERSNUM >= 20301
+ if (schedules)
+ StateKey.Remove();
+#endif
}
}
@@ -553,7 +568,12 @@ bool cListItem::IsActive(tChannelID ChannelID)
bool active = false;
if (numchannels > 0) {
int i = 0;
+#if VDRVERSNUM >= 20301
+ LOCK_CHANNELS_READ;
+ int channel_number = Channels->GetByChannelID(ChannelID)->Number();
+#else
int channel_number = Channels.GetByChannelID(ChannelID)->Number();
+#endif
while (i < numchannels) {
if ((channel_number == GetChannelNum(i)) ||
(GetChannelID(i) && (ChannelID == *GetChannelID(i)))) {
From 12db9aadf7a05cae21bd7d75882b8883ac36205d Mon Sep 17 00:00:00 2001
From: glenvt18 <glenvt18@gmail.com>
Date: Thu, 18 May 2017 06:03:32 +0300
Subject: [PATCH 2/2] Make compatible with VDR 2.3.4
---
epghandler.h | 3 +++
1 file changed, 3 insertions(+)
diff --git a/epghandler.h b/epghandler.h
index de090af..bf65760 100644
--- a/epghandler.h
+++ b/epghandler.h
@@ -15,6 +15,9 @@ class cEpgfixerEpgHandler : public cEpgHandler
{
public:
cEpgfixerEpgHandler(void) {};
+#if VDRVERSNUM >= 20304
+ virtual bool BeginSegmentTransfer(const cChannel *Channel, bool Dummy) { return true; }
+#endif
virtual bool HandleEvent(cEvent *Event);
virtual bool IgnoreChannel(const cChannel *Channel);
virtual bool FixEpgBugs(cEvent *Event);

View File

@ -1,32 +1,34 @@
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# This file is part of LibreELEC - https://libreelec.tv
# Copyright (C) 2016-present Team LibreELEC
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
#
# OpenELEC is free software: you can redistribute it and/or modify
# LibreELEC is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# OpenELEC is distributed in the hope that it will be useful,
# LibreELEC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenELEC. If not, see <http://www.gnu.org/licenses/>.
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
################################################################################
PKG_NAME="vdr-plugin-epgsearch"
PKG_VERSION="0b09f90"
PKG_SHA256="2f50a784a01ef4c7c868b92b63a82b96296247eb148d757b31514a7887ebb534"
PKG_VERSION="c7c02e2"
PKG_SHA256="d8096c261cf94653f7487e7f89c9d38d8c2a5c27a766816b77fe0c49b4a82208"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="http://winni.vdr-developer.org/epgsearch/"
PKG_URL="https://projects.vdr-developer.org/git/vdr-plugin-epgsearch.git/snapshot/$PKG_NAME-$PKG_VERSION.tar.bz2"
PKG_URL="https://github.com/vdr-projects/vdr-plugin-epgsearch/archive/$PKG_VERSION.tar.gz"
PKG_DEPENDS_TARGET="toolchain vdr"
PKG_SECTION="multimedia"
PKG_SHORTDESC="vdr-epgsearch"
PKG_LONGDESC="vdr-epgsearch"
PKG_SHORTDESC="EPGSearch is a plugin for the Video-Disc-Recorder (VDR)."
PKG_LONGDESC="EPGSearch is a plugin for the Video-Disc-Recorder (VDR)."
PKG_TOOLCHAIN="manual"
make_target() {
VDR_DIR=$(get_build_dir vdr)
@ -45,9 +47,4 @@ post_make_target() {
LIB_NAME=lib${PKG_NAME/-plugin/}
cp --remove-destination $PKG_BUILD/${LIB_NAME}.so $PKG_BUILD/${LIB_NAME}.so.${VDR_APIVERSION}
$STRIP libvdr-*.so*
}
makeinstall_target() {
: # installation not needed, done by create-addon script
}

View File

@ -1,6 +1,5 @@
diff -Naur vdr-epgsearch-29c174a/Makefile vdr-epgsearch-29c174a.patch/Makefile
--- vdr-epgsearch-29c174a/Makefile 2014-01-18 16:53:11.000000000 +0100
+++ vdr-epgsearch-29c174a.patch/Makefile 2016-01-07 04:47:33.004326981 +0100
--- a/Makefile
+++ b/Makefile
@@ -130,9 +130,8 @@
OBJS = afuzzy.o blacklist.o changrp.o confdloader.o conflictcheck.o conflictcheck_thread.o distance.o $(PLUGIN).o epgsearchcats.o epgsearchcfg.o epgsearchext.o epgsearchsetup.o epgsearchsvdrp.o epgsearchtools.o mail.o md5.o menu_announcelist.o menu_blacklistedit.o menu_blacklists.o menu_commands.o menu_conflictcheck.o menu_deftimercheckmethod.o menu_dirselect.o menu_event.o menu_favorites.o menu_main.o menu_myedittimer.o menu_quicksearch.o menu_recsdone.o menu_search.o menu_searchactions.o menu_searchedit.o menu_searchresults.o menu_searchtemplate.o menu_switchtimers.o menu_templateedit.o menu_timersdone.o menu_whatson.o noannounce.o pending_notifications.o rcfile.o recdone.o recstatus.o searchtimer_thread.o services.o switchtimer.o switchtimer_thread.o templatefile.o timer_thread.o timerdone.o timerstatus.o uservars.o varparser.o

View File

@ -1,14 +1,6 @@
From 61c795e71df00f4d3c22d2be405ceb0eb0e0e49c Mon Sep 17 00:00:00 2001
From: Stefan Saraev <stefan@saraev.ca>
Date: Fri, 22 Nov 2013 21:45:56 +0200
Subject: [PATCH] don't build unused plugins
---
Makefile | 6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/Makefile b/Makefile
index 118e379..5f15ebe 100644
--- a/Makefile
+++ b/Makefile
@@ -16,9 +16,9 @@
@ -24,6 +16,4 @@ index 118e379..5f15ebe 100644
### edit this to '0' if you don't want epgsearch to auto config itself
AUTOCONFIG=1
--
1.7.2.5

View File

@ -1,24 +1,25 @@
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# This file is part of LibreELEC - https://libreelec.tv
# Copyright (C) 2016-present Team LibreELEC
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
#
# OpenELEC is free software: you can redistribute it and/or modify
# LibreELEC is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# OpenELEC is distributed in the hope that it will be useful,
# LibreELEC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenELEC. If not, see <http://www.gnu.org/licenses/>.
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
################################################################################
PKG_NAME="vdr-plugin-iptv"
PKG_VERSION="2226be2"
PKG_SHA256="8c8297a6834cc7104901b256a4b31dfb25f3956ce3c4837c7ffb8ddf0507d09b"
PKG_VERSION="0fe1cb7"
PKG_SHA256="34e5c950d6150bbf98ca733a216f67ff56e078dd1db511aee0edc026e431ee6f"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="http://www.saunalahti.fi/~rahrenbe/vdr/iptv/"
@ -27,6 +28,7 @@ PKG_DEPENDS_TARGET="toolchain vdr curl"
PKG_SECTION="multimedia"
PKG_SHORTDESC="vdr-iptv: an IPTV plugin for the Video Disk Recorder (VDR)"
PKG_LONGDESC="vdr-iptv is an IPTV plugin for the Video Disk Recorder (VDR)"
PKG_TOOLCHAIN="manual"
make_target() {
VDR_DIR=$(get_build_dir vdr)
@ -45,9 +47,4 @@ post_make_target() {
LIB_NAME=lib${PKG_NAME/-plugin/}
cp --remove-destination $PKG_BUILD/${LIB_NAME}.so $PKG_BUILD/${LIB_NAME}.so.${VDR_APIVERSION}
$STRIP libvdr-*.so*
}
makeinstall_target() {
: # installation not needed, done by create-addon script
}

View File

@ -1,6 +1,5 @@
diff -Naur iptv-2.2.1/Makefile iptv-2.2.1.patch/Makefile
--- iptv-2.2.1/Makefile 2015-04-04 03:20:00.000000000 +0200
+++ iptv-2.2.1.patch/Makefile 2016-01-07 07:37:31.037078104 +0100
--- a/Makefile
+++ b/Makefile
@@ -54,7 +54,7 @@
### Libraries

View File

@ -1,33 +1,35 @@
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# This file is part of LibreELEC - https://libreelec.tv
# Copyright (C) 2016-present Team LibreELEC
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
#
# OpenELEC is free software: you can redistribute it and/or modify
# LibreELEC is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# OpenELEC is distributed in the hope that it will be useful,
# LibreELEC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenELEC. If not, see <http://www.gnu.org/licenses/>.
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
################################################################################
PKG_NAME="vdr-plugin-live"
PKG_VERSION="0.3.0"
PKG_SHA256="c200042e51393c247be97e7f4667a1f3f06319d5c8e538adca32fdfac8d178da"
PKG_VERSION="e582514"
PKG_SHA256="74deb2ca43ffb5779b3f9ff6f34c8b53898a226fcf92605d7ede0401cb62601c"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="http://live.vdr-developer.org/en/index.php"
PKG_URL="http://live.vdr-developer.org/downloads/${PKG_NAME/-plugin/}-${PKG_VERSION}.tar.gz"
PKG_SOURCE_DIR="live-${PKG_VERSION}"
PKG_URL="https://github.com/vdr-projects/vdr-plugin-live/archive/$PKG_VERSION.tar.gz"
PKG_SOURCE_DIR="$PKG_NAME-${PKG_VERSION}*"
PKG_DEPENDS_TARGET="toolchain vdr tntnet pcre:host pcre"
PKG_SECTION="multimedia"
PKG_SHORTDESC="vdr-live: the LIVE Interactive VDR Environment/"
PKG_LONGDESC="vdr-live allows a comfortable operation of VDR and some of its plugins trough a web interface"
PKG_TOOLCHAIN="manual"
pre_configure_target() {
export CFLAGS="$CFLAGS -fPIC"
@ -35,18 +37,15 @@ pre_configure_target() {
export LDFLAGS="$LDFLAGS -fPIC -L$SYSROOT_PREFIX/usr/lib/iconv"
}
pre_make_target() {
# dont build parallel
MAKEFLAGS=-j1
}
make_target() {
VDR_DIR=$(get_build_dir vdr)
export CPLUS_INCLUDE_PATH=$VDR_DIR/include
VDR_APIVERSION=`sed -ne '/define APIVERSION/s/^.*"\(.*\)".*$/\1/p' $VDR_DIR/config.h`
LIB_NAME=lib${PKG_NAME/-plugin/}
make VDRDIR=$VDR_DIR \
LIBDIR="." \
LOCALEDIR="./locale"
}
makeinstall_target() {
: # installation not needed, done by create-addon script
cp --remove-destination $PKG_BUILD/${LIB_NAME}.so $PKG_BUILD/${LIB_NAME}.so.${VDR_APIVERSION}
}

View File

@ -1,290 +0,0 @@
commit 042724e30d5690ab67a6c04aea48a16b9a3b085b
Author: Dieter Hametner <dh (plus) vdr (at) gekrumbel (dot) de>
Date: Fri May 3 01:37:41 2013 +0200
Make LIVE compile and work with Tntnet and cxxtools version 2.2.
Thanks to Tommi Mäkitalo for his help on resolving the issues.
This problem was reported by Martin Gansser and by the user 'varas' in
the bugtracker as bug #1351. This commit fixes that bug.
diff --git a/pages/recordings.ecpp b/pages/recordings.ecpp
index 51018bb..80f145b 100644
--- a/pages/recordings.ecpp
+++ b/pages/recordings.ecpp
@@ -205,7 +205,11 @@ for (recIter = recItems.begin(); recIter != recItems.end(); ++recIter) {
<& rec_item_dir name=(recItem->Name()) level=(level) &>
<%cpp>
#if TNT_HAS_QUERYPARAMS
+#if TNT_QUERYPARAMS_NO_BOOL
+ tnt::QueryParams recItemParams(qparam);
+#else
tnt::QueryParams recItemParams(qparam, false);
+#endif
#else
cxxtools::QueryParams recItemParams(qparam, false);
#endif
diff --git a/tntconfig.cpp b/tntconfig.cpp
index 3a1fd14..3325776 100644
--- a/tntconfig.cpp
+++ b/tntconfig.cpp
@@ -3,7 +3,13 @@
#include <fstream>
#include <sstream>
#include <stdexcept>
+#include "tntfeatures.h"
+#if TNT_LOG_SERINFO
+#include <cxxtools/log.h>
+#include <cxxtools/xml/xmldeserializer.h>
+#else
#include <cxxtools/loginit.h>
+#endif
#include <tnt/sessionscope.h>
#include <tnt/httpreply.h>
#include <vdr/config.h>
@@ -181,19 +187,67 @@ namespace vdrlive {
#endif
#if TNT_CONFIG_INTERNAL
+ namespace {
+ std::string GetResourcePath()
+ {
+#if APIVERSNUM > 10729
+ string resourceDir(Plugin::GetResourceDirectory());
+ return resourceDir;
+#else
+ string configDir(Plugin::GetConfigDirectory());
+ return configDir;
+#endif
+ }
+
+ void MapUrl(tnt::Tntnet & app, const char *rule, const char * component, std::string const & instPath, const char * pathInfo, const char * mime_type)
+ {
+#if TNT_MAPURL_NAMED_ARGS
+ tnt::Mapping::args_type argMap;
+ argMap.insert(std::make_pair("mime-type", mime_type));
+#endif
+ app.mapUrl(rule, component)
+ .setPathInfo(instPath + pathInfo)
+#if TNT_MAPURL_NAMED_ARGS
+ .setArgs(argMap);
+#else
+ .pushArg(mime_type);
+#endif
+ }
+ }
+
void TntConfig::Configure(tnt::Tntnet& app) const
{
string const configDir(Plugin::GetConfigDirectory());
-#if APIVERSNUM > 10729
- string const resourceDir(Plugin::GetResourceDirectory());
-#endif
+#if TNT_LOG_SERINFO
+ cxxtools::SerializationInfo si;
+ std::istringstream logXmlConf(
+ "<logging>\n"
+ " <rootlogger>" + LiveSetup().GetTntnetLogLevel() + "</rootlogger>\n"
+ " <loggers>\n"
+ " <logger>\n"
+ " <category>cxxtools</category>\n"
+ " <level>" + LiveSetup().GetTntnetLogLevel() + "</level>\n"
+ " </logger>\n"
+ " <logger>\n"
+ " <category>tntnet</category>\n"
+ " <level>" + LiveSetup().GetTntnetLogLevel() + "</level>\n"
+ " </logger>\n"
+ " </loggers>\n"
+ "</logging>\n"
+ );
+ cxxtools::xml::XmlDeserializer d(logXmlConf);
+ d.deserialize(si);
+ log_init(si);
+#else
std::istringstream logConf(
"rootLogger=" + LiveSetup().GetTntnetLogLevel() + "\n"
"logger.tntnet=" + LiveSetup().GetTntnetLogLevel() + "\n"
"logger.cxxtools=" + LiveSetup().GetTntnetLogLevel() + "\n"
);
+
log_init(logConf);
+#endif
// +++ CAUTION +++ CAUTION +++ CAUTION +++ CAUTION +++ CAUTION +++
// ------------------------------------------------------------------------
@@ -229,13 +283,12 @@ namespace vdrlive {
// the following selects the theme specific 'theme.css' file
// inserted by 'tadi' -- verified with above, but not counterchecked yet!
- app.mapUrl("^/themes/([^/]*)/css.*/(.+\\.css)", "content")
-#if APIVERSNUM > 10729
- .setPathInfo(resourceDir + "/themes/$1/css/$2")
-#else
- .setPathInfo(configDir + "/themes/$1/css/$2")
-#endif
- .pushArg("text/css");
+ MapUrl(app,
+ "^/themes/([^/]*)/css.*/(.+\\.css)",
+ "content",
+ GetResourcePath(),
+ "/themes/$1/css/$2",
+ "text/css");
// the following rules provide a search scheme for images. The first
// rule where a image is found, terminates the search.
@@ -243,79 +296,82 @@ namespace vdrlive {
// 2. /img/<imgname>.<ext>
// deprecated: 3. <imgname>.<ext> (builtin images)
// inserted by 'tadi' -- verified with above, but not counterchecked yet!
- app.mapUrl("^/themes/([^/]*)/img.*/(.+)\\.(.+)", "content")
-#if APIVERSNUM > 10729
- .setPathInfo(resourceDir + "/themes/$1/img/$2.$3")
-#else
- .setPathInfo(configDir + "/themes/$1/img/$2.$3")
-#endif
- .pushArg("image/$3");
- app.mapUrl("^/themes/([^/]*)/img.*/(.+)\\.(.+)", "content")
-#if APIVERSNUM > 10729
- .setPathInfo(resourceDir + "/img/$2.$3")
-#else
- .setPathInfo(configDir + "/img/$2.$3")
-#endif
- .pushArg("image/$3");
+ MapUrl(app,
+ "^/themes/([^/]*)/img.*/(.+)\\.(.+)",
+ "content",
+ GetResourcePath(),
+ "/themes/$1/img/$2.$3",
+ "image/$3");
+
+ MapUrl(app,
+ "^/themes/([^/]*)/img.*/(.+)\\.(.+)",
+ "content",
+ GetResourcePath(),
+ "/img/$2.$3",
+ "image/$3");
// deprecated: file << "MapUrl ^/themes/([^/]*)/img.*/(.+)\\.(.+) $2@" << endl;
// Epg images
string const epgImgPath(LiveSetup().GetEpgImageDir());
if (!epgImgPath.empty()) {
// inserted by 'tadi' -- verified with above, but not counterchecked yet!
- app.mapUrl("^/epgimages/([^/]*)\\.([^./]+)", "content")
- .setPathInfo(epgImgPath + "/$1.$2")
- .pushArg("image/$2");
+ MapUrl(app,
+ "^/epgimages/([^/]*)\\.([^./]+)",
+ "content",
+ epgImgPath,
+ "/$1.$2",
+ "image/$2");
}
// select additional (not build in) javascript.
// WARNING: no path components with '.' in the name are allowed. Only
// the basename may contain dots and must end with '.js'
// inserted by 'tadi' -- verified with above, but not counterchecked yet!
- app.mapUrl("^/js(/[^.]*)([^/]*\\.js)", "content")
-#if APIVERSNUM > 10729
- .setPathInfo(resourceDir + "/js$1$2")
-#else
- .setPathInfo(configDir + "/js$1$2")
-#endif
- .pushArg("text/javascript");
+ MapUrl(app,
+ "^/js(/[^.]*)([^/]*\\.js)",
+ "content",
+ GetResourcePath(),
+ "/js$1$2",
+ "text/javascript");
// map to 'css/basename(uri)'
// inserted by 'tadi' -- verified with above, but not counterchecked yet!
- app.mapUrl("^/css.*/(.+)", "content")
-#if APIVERSNUM > 10729
- .setPathInfo(resourceDir + "/css/$1")
-#else
- .setPathInfo(configDir + "/css/$1")
-#endif
- .pushArg("text/css");
+ MapUrl(app,
+ "^/css.*/(.+)",
+ "content",
+ GetResourcePath(),
+ "/css/$1",
+ "text/css");
// map to 'img/basename(uri)'
// inserted by 'tadi' -- verified with above, but not counterchecked yet!
- app.mapUrl("^/img.*/(.+)\\.([^.]+)", "content")
-#if APIVERSNUM > 10729
- .setPathInfo(resourceDir + "/img/$1.$2")
-#else
- .setPathInfo(configDir + "/img/$1.$2")
-#endif
- .pushArg("image/$2");
+ MapUrl(app,
+ "^/img.*/(.+)\\.([^.]+)",
+ "content",
+ GetResourcePath(),
+ "/img/$1.$2",
+ "image/$2");
// Map favicon.ico into img directory
- app.mapUrl("^/favicon.ico$", "content")
-#if APIVERSNUM > 10729
- .setPathInfo(resourceDir + "/img/favicon.ico")
-#else
- .setPathInfo(configDir + "/img/favicon.ico")
-#endif
- .pushArg("image/x-icon");
+ MapUrl(app,
+ "^/favicon.ico$",
+ "content",
+ GetResourcePath(),
+ "/img/favicon.ico",
+ "image/x-icon");
// takes first path components without 'extension' when it does not
// contain '.'
// modified by 'tadi' -- verified with above, but not counterchecked yet!
app.mapUrl("^/([^./]+)(.*)?", "$1");
+#if TNT_GLOBAL_TNTCONFIG
+ tnt::TntConfig::it().sessionTimeout = 86400;
+ tnt::TntConfig::it().defaultContentType = string("text/html; charset=") + LiveI18n().CharacterEncoding();
+#else
tnt::Sessionscope::setDefaultTimeout(86400);
tnt::HttpReply::setDefaultContentType(string("text/html; charset=") + LiveI18n().CharacterEncoding());
+#endif
Setup::IpList const& ips = LiveSetup().GetServerIps();
int port = LiveSetup().GetServerPort();
diff --git a/tntfeatures.h b/tntfeatures.h
index 6de1f88..76d3757 100644
--- a/tntfeatures.h
+++ b/tntfeatures.h
@@ -17,6 +17,9 @@
// Query params are now in tntnet and not in cxxtools
#define TNT_HAS_QUERYPARAMS (TNTVERSION >= 16060)
+// Query params without boolean parameter
+#define TNT_QUERYPARAMS_NO_BOOL (TNTVERSION >= 22000)
+
// One can request the host part of the request url
#define TNT_HAS_GETHOST (TNTVERSION >= 16060)
@@ -26,4 +29,13 @@
// version of TNTNET that binds ipv6 addresses with IPV6_V6ONLY flag set to true
#define TNT_IPV6_V6ONLY (CXXTOOLVER >= 21000)
+// version of TNTNET with properties deserializer for logger configuration args.
+#define TNT_LOG_SERINFO (CXXTOOLVER >= 22000)
+
+// version of TNTNET wich expects name, value mappings for Url-Mapper arguments.
+#define TNT_MAPURL_NAMED_ARGS (TNTVERSION >= 22000)
+
+// version of TNTNET where configuration is global
+#define TNT_GLOBAL_TNTCONFIG (TNTVERSION >= 22000)
+
#endif // VDR_LIVE_TNTFEATURES_H

View File

@ -1,25 +0,0 @@
commit 69f84f95fa875c6f562294b1a6a1ea6f584d3f6c
Author: Dieter Hametner <dh (plus) vdr (at) gekrumbel (dot) de>
Date: Sat May 4 22:27:09 2013 +0200
With tntnet v2.2 use also the request.getArg(<name>) function.
In the previous commit support for tntnet 2.2 was added. The URL
mapping changed in that version and allows now named arguments. This
change makes uses of this feature now.
diff --git a/pages/content.ecpp b/pages/content.ecpp
index 27d827c..cde092f 100644
--- a/pages/content.ecpp
+++ b/pages/content.ecpp
@@ -17,7 +17,11 @@ bool logged_in(false);
string mime("image/png");
if (request.getArgsCount() > 0) {
+#if TNT_MAPURL_NAMED_ARGS
+ mime = request.getArg("mime-type");
+#else
mime = request.getArg(0);
+#endif
// dsyslog("vdrlive::content found mime arg (%s)", mime.c_str());
}
reply.setContentType(mime);

View File

@ -1,76 +0,0 @@
commit 0f8a281027f852ed5968361bcb7420ed242d0476
Author: Stefan Saraev <stefan@saraev.ca>
Date: Sat Oct 19 22:15:14 2013 +0300
vdr 2.1.2 buildfix
diff --git a/pages/recordings.ecpp b/pages/recordings.ecpp
index 80f145b..6da5285 100644
--- a/pages/recordings.ecpp
+++ b/pages/recordings.ecpp
@@ -79,7 +79,7 @@ for (deletions_type::const_iterator it = deletions.begin(); it != deletions.end(
deletions.clear();
int FreeMB, UsedMB;
-int Percent = VideoDiskSpace(&FreeMB, &UsedMB);
+int Percent = cVideoDirectory::VideoDiskSpace(&FreeMB, &UsedMB);
int Minutes = int(double(FreeMB) / MB_PER_MINUTE);
int Hours = Minutes / 60;
Minutes %= 60;
diff --git a/recman.cpp b/recman.cpp
index 6a2fc00..9ed88f0 100644
--- a/recman.cpp
+++ b/recman.cpp
@@ -112,7 +112,7 @@ namespace vdrlive {
if (found == string::npos)
return false;
- string newname = string(VideoDirectory) + "/" + name + oldname.substr(found);
+ string newname = string(cVideoDirectory::Name()) + "/" + name + oldname.substr(found);
if (!MoveDirectory(oldname.c_str(), newname.c_str(), copy)) {
esyslog("[LIVE]: renaming failed from '%s' to '%s'", oldname.c_str(), newname.c_str());
diff --git a/tntconfig.cpp b/tntconfig.cpp
index 3325776..161fdc4 100644
--- a/tntconfig.cpp
+++ b/tntconfig.cpp
@@ -279,7 +279,7 @@ namespace vdrlive {
// inserted by 'tadi' -- not verified, not counterchecked yet!
//app.mapUrl("^/vlc/(.+)", "static@tntnet")
// .setPathInfo("/$1")
- // .pushArg(string("DocumentRoot=") + VideoDirectory);
+ // .pushArg(string("DocumentRoot=") + cVideoDirectory::Name());
// the following selects the theme specific 'theme.css' file
// inserted by 'tadi' -- verified with above, but not counterchecked yet!
diff --git a/tools.cpp b/tools.cpp
index c744d06..cb3529e 100644
--- a/tools.cpp
+++ b/tools.cpp
@@ -365,7 +365,7 @@ namespace vdrlive {
stat(source.c_str(), &st1);
stat(target.c_str(),&st2);
if (!copy && (st1.st_dev == st2.st_dev)) {
- if (!RenameVideoFile(source.c_str(), target.c_str())) {
+ if (!cVideoDirectory::RenameVideoFile(source.c_str(), target.c_str())) {
esyslog("[LIVE]: rename failed from %s to %s", source.c_str(), target.c_str());
return false;
}
@@ -461,7 +461,7 @@ namespace vdrlive {
size_t found = source.find_last_of(delim);
if (found != std::string::npos) {
source = source.substr(0, found);
- while (source != VideoDirectory) {
+ while (source != cVideoDirectory::Name()) {
found = source.find_last_of(delim);
if (found == std::string::npos)
break;
@@ -478,7 +478,7 @@ namespace vdrlive {
size_t found = target.find_last_of(delim);
if (found != std::string::npos) {
target = target.substr(0, found);
- while (target != VideoDirectory) {
+ while (target != cVideoDirectory::Name()) {
found = target.find_last_of(delim);
if (found == std::string::npos)
break;

View File

@ -1,25 +0,0 @@
From d95f6d719298b4586fc4b889612423be67b52e88 Mon Sep 17 00:00:00 2001
From: Stefan Saraev <stefan@saraev.ca>
Date: Mon, 16 Jun 2014 12:06:29 +0300
Subject: [PATCH] dont build i18n
---
Makefile | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/Makefile b/Makefile
index ab2f2b5..923d184 100644
--- a/Makefile
+++ b/Makefile
@@ -94,7 +94,7 @@ WEBLIBS = pages/libpages.a css/libcss.a javascript/libjavascript.a
### Default rules:
-all: libvdr-$(PLUGIN).so $(I18NTARG)
+all: libvdr-$(PLUGIN).so
.PHONY: all dist clean subdirs $(SUBDIRS) PAGES
--
1.7.2.5

View File

@ -0,0 +1,36 @@
--- a/Makefile
+++ b/Makefile
@@ -11,7 +11,7 @@ PLUGIN := live
VERSION := $(shell grep '\#define LIVEVERSION ' setup.h | awk '{ print $$3 }' | sed -e 's/[";]//g')
### Check for libpcre c++ wrapper
-HAVE_LIBPCRECPP := $(shell pcre-config --libs-cpp)
+HAVE_LIBPCRECPP := $(shell pkg-config --libs libpcrecpp libpcre)
### The directory environment:
# Use package data if installed...otherwise assume we're under the VDR source directory:
@@ -37,18 +37,18 @@ APIVERSION := $(call PKGCFG,apiversion)
include global.mk
### Determine tntnet and cxxtools versions:
-TNTVERSION = $(shell tntnet-config --version | sed -e's/\.//g' | sed -e's/pre.*//g' | awk '/^..$$/ { print $$1."000"} /^...$$/ { print $$1."00"} /^....$$/ { print $$1."0" } /^.....$$/ { print $$1 }')
-CXXTOOLVER = $(shell cxxtools-config --version | sed -e's/\.//g' | sed -e's/pre.*//g' | awk '/^..$$/ { print $$1."000"} /^...$$/ { print $$1."00"} /^....$$/ { print $$1."0" } /^.....$$/ { print $$1 }')
+TNTVERSION = $(shell pkg-config --modversion tntnet | sed -e's/\.//g' | sed -e's/pre.*//g' | awk '/^..$$/ { print $$1."000"} /^...$$/ { print $$1."00"} /^....$$/ { print $$1."0" } /^.....$$/ { print $$1 }')
+CXXTOOLVER = $(shell pkg-config --modversion cxxtools | sed -e's/\.//g' | sed -e's/pre.*//g' | awk '/^..$$/ { print $$1."000"} /^...$$/ { print $$1."00"} /^....$$/ { print $$1."0" } /^.....$$/ { print $$1 }')
-CXXFLAGS += $(shell tntnet-config --cxxflags)
-LIBS += $(shell tntnet-config --libs)
+CXXFLAGS += $(shell pkg-config --cflags tntnet)
+LIBS += $(shell pkg-config --libs tntnet)
### Optional configuration features
PLUGINFEATURES :=
ifneq ($(HAVE_LIBPCRECPP),)
PLUGINFEATURES += -DHAVE_LIBPCRECPP
- CXXFLAGS += $(shell pcre-config --cflags)
- LIBS += $(HAVE_LIBPCRECPP)
+ CXXFLAGS += $(shell pkg-config --cflags libpcreposix libpcre)
+ LIBS += -Wl,-Bstatic $(HAVE_LIBPCRECPP) -Wl,-Bdynamic
endif
# -Wno-deprecated-declarations .. get rid of warning: template<class> class std::auto_ptr is deprecated

View File

@ -0,0 +1,11 @@
--- a/Makefile
+++ b/Makefile
@@ -98,7 +98,7 @@ SUBDIRS := $(WEB_DIR_PAGES) $(WEB_DIR_CSS) $(WEB_DIR_JAVA)
### The main target:
.PHONY: all
-all: lib i18n
+all: lib
@true
### Implicit rules:

View File

@ -1,43 +0,0 @@
--- a/stdext.h.orig 2016-02-07 12:55:05.958100061 +0100
+++ b/stdext.h 2016-02-07 12:56:49.583375455 +0100
@@ -3,8 +3,38 @@
#if __GNUC__ >= 4
-# include <tr1/functional>
-# include <tr1/memory>
+#if __GNUC__ >= 6
+
+#include <memory>
+#include <functional>
+
+namespace std {
+namespace tr1 {
+
+ using std::bind;
+ using std::shared_ptr;
+ using std::weak_ptr;
+
+ namespace placeholders {
+ using std::placeholders::_1;
+ using std::placeholders::_2;
+ using std::placeholders::_3;
+ using std::placeholders::_4;
+ using std::placeholders::_5;
+ using std::placeholders::_6;
+ using std::placeholders::_7;
+ using std::placeholders::_8;
+ using std::placeholders::_9;
+ }
+} // namespace tr1
+} // namespace std
+
+#else
+
+ # include <tr1/functional>
+ # include <tr1/memory>
+
+# endif
#else

View File

@ -1,14 +0,0 @@
part of patch from Jasmin Jessich <jasmin@anw.at>
https://github.com/jasmin-j/vdr-plugin-live/commit/b86560030911208be738163ecd0e48790c9317a1
--- a/pages/multischedule.ecpp 2017-05-11 18:13:21.359696377 +0200
+++ b/pages/multischedule.ecpp 2017-05-11 18:15:13.777869558 +0200
@@ -295,7 +295,7 @@
cChannel* Channel = Channels.GetByNumber( chan );
if ( ! Channel )
continue;
- if ( Channel->GroupSep() || Channel->Name() == '\0' )
+ if ( Channel->GroupSep() || !Channel->Name() || !*Channel->Name() )
continue;
channel_names[ j ] = Channel->Name();
channel_IDs[ j ] = Channel->GetChannelID();

View File

@ -1,86 +0,0 @@
diff -Naur live-0.3.0/css/Makefile live-0.3.0.patch/css/Makefile
--- live-0.3.0/css/Makefile 2013-04-04 22:16:40.000000000 +0200
+++ live-0.3.0.patch/css/Makefile 2016-01-07 06:49:35.954078949 +0100
@@ -4,7 +4,7 @@
### Additional options to silence TNTNET warnings
TNTFLAGS ?= -Wno-overloaded-virtual -Wno-unused-function
-TNTVERSION ?= $(shell tntnet-config --version | sed -e's/\.//g' | sed -e's/pre.*//g' | awk '/^..$$/ { print $$1."000"} /^...$$/ { print $$1."00"} /^....$$/ { print $$1."0" } /^.....$$/ { print $$1 }')
+TNTVERSION ?= $(shell pkg-config --modversion tntnet | sed -e's/\.//g' | sed -e's/pre.*//g' | awk '/^..$$/ { print $$1."000"} /^...$$/ { print $$1."00"} /^....$$/ { print $$1."0" } /^.....$$/ { print $$1 }')
### The C++ compiler and options:
diff -Naur live-0.3.0/httpd/Makefile live-0.3.0.patch/httpd/Makefile
--- live-0.3.0/httpd/Makefile 2013-04-04 22:16:40.000000000 +0200
+++ live-0.3.0.patch/httpd/Makefile 2016-01-07 06:51:05.349223371 +0100
@@ -3,7 +3,7 @@
CXXFLAGS ?= -O2 -Woverloaded-virtual -Wall -fPIC
-CXXFLAGS += `tntnet-config --cxxflags`
+CXXFLAGS += `pkg-config --cflags tntnet`
### Includes and Defines (add further entries here):
diff -Naur live-0.3.0/javascript/Makefile live-0.3.0.patch/javascript/Makefile
--- live-0.3.0/javascript/Makefile 2013-04-04 22:16:40.000000000 +0200
+++ live-0.3.0.patch/javascript/Makefile 2016-01-07 06:49:51.561104158 +0100
@@ -4,7 +4,7 @@
### Additional options to silence TNTNET warnings
TNTFLAGS ?= -Wno-overloaded-virtual -Wno-unused-function
-TNTVERSION ?= $(shell tntnet-config --version | sed -e's/\.//g' | sed -e's/pre.*//g' | awk '/^..$$/ { print $$1."000"} /^...$$/ { print $$1."00"} /^....$$/ { print $$1."0" } /^.....$$/ { print $$1 }')
+TNTVERSION ?= $(shell pkg-config --modversion tntnet | sed -e's/\.//g' | sed -e's/pre.*//g' | awk '/^..$$/ { print $$1."000"} /^...$$/ { print $$1."00"} /^....$$/ { print $$1."0" } /^.....$$/ { print $$1 }')
### The C++ compiler and options:
diff -Naur live-0.3.0/Makefile live-0.3.0.patch/Makefile
--- live-0.3.0/Makefile 2013-04-04 22:16:40.000000000 +0200
+++ live-0.3.0.patch/Makefile 2016-01-07 06:48:29.683971910 +0100
@@ -26,7 +26,7 @@
LDFLAGS ?= -fPIC -g
### Check for libpcre c++ wrapper
-HAVE_LIBPCRECPP = $(shell pcre-config --libs-cpp)
+HAVE_LIBPCRECPP = $(shell pkg-config --libs libpcrecpp libpcre)
### The directory environment:
@@ -46,18 +46,18 @@
APIVERSION = $(shell sed -ne '/define APIVERSION/s/^.*"\(.*\)".*$$/\1/p' $(VDRDIR)/config.h)
I18NTARG = $(shell if [ `echo $(APIVERSION) | tr [.] [0]` -ge "10507" ]; then echo "i18n"; fi)
-TNTVERSION = $(shell tntnet-config --version | sed -e's/\.//g' | sed -e's/pre.*//g' | awk '/^..$$/ { print $$1."000"} /^...$$/ { print $$1."00"} /^....$$/ { print $$1."0" } /^.....$$/ { print $$1 }')
-CXXTOOLVER = $(shell cxxtools-config --version | sed -e's/\.//g' | sed -e's/pre.*//g' | awk '/^..$$/ { print $$1."000"} /^...$$/ { print $$1."00"} /^....$$/ { print $$1."0" } /^.....$$/ { print $$1 }')
+TNTVERSION = $(shell pkg-config --modversion tntnet | sed -e's/\.//g' | sed -e's/pre.*//g' | awk '/^..$$/ { print $$1."000"} /^...$$/ { print $$1."00"} /^....$$/ { print $$1."0" } /^.....$$/ { print $$1 }')
+CXXTOOLVER = $(shell pkg-config --modversion cxxtools | sed -e's/\.//g' | sed -e's/pre.*//g' | awk '/^..$$/ { print $$1."000"} /^...$$/ { print $$1."00"} /^....$$/ { print $$1."0" } /^.....$$/ { print $$1 }')
TNTVERS7 = $(shell ver=$(TNTVERSION); if [ $$ver -ge "1606" ]; then echo "yes"; fi)
-CXXFLAGS += $(shell tntnet-config --cxxflags)
-LIBS += $(shell tntnet-config --libs)
+CXXFLAGS += $(shell pkg-config --cflags tntnet)
+LIBS += $(shell pkg-config --libs tntnet)
### Optional configuration features
PLUGINFEATURES =
ifneq ($(HAVE_LIBPCRECPP),)
PLUGINFEATURES += -DHAVE_LIBPCRECPP
- CXXFLAGS += $(shell pcre-config --cflags)
+ CXXFLAGS += $(shell pkg-config --cflags libpcreposix libpcre)
LIBS += $(HAVE_LIBPCRECPP)
endif
diff -Naur live-0.3.0/pages/Makefile live-0.3.0.patch/pages/Makefile
--- live-0.3.0/pages/Makefile 2013-04-04 22:16:40.000000000 +0200
+++ live-0.3.0.patch/pages/Makefile 2016-01-07 06:50:04.234124627 +0100
@@ -4,8 +4,8 @@
### Additional options to silence TNTNET warnings
TNTFLAGS ?= -Wno-overloaded-virtual -Wno-unused-variable
-TNTVERSION ?= $(shell tntnet-config --version | sed -e's/\.//g' | sed -e's/pre.*//g' | awk '/^..$$/ { print $$1."000"} /^...$$/ { print $$1."00"} /^....$$/ { print $$1."0" } /^.....$$/ { print $$1 }')
-CXXTOOLVER ?= $(shell cxxtools-config --version | sed -e's/\.//g' | sed -e's/pre.*//g' | awk '/^..$$/ { print $$1."000"} /^...$$/ { print $$1."00"} /^....$$/ { print $$1."0" } /^.....$$/ { print $$1 }')
+TNTVERSION ?= $(shell pkg-config --modversion tntnet | sed -e's/\.//g' | sed -e's/pre.*//g' | awk '/^..$$/ { print $$1."000"} /^...$$/ { print $$1."00"} /^....$$/ { print $$1."0" } /^.....$$/ { print $$1 }')
+CXXTOOLVER ?= $(shell pkg-config --modversion cxxtools | sed -e's/\.//g' | sed -e's/pre.*//g' | awk '/^..$$/ { print $$1."000"} /^...$$/ { print $$1."00"} /^....$$/ { print $$1."0" } /^.....$$/ { print $$1 }')
### The C++ compiler and options:

View File

@ -1,19 +1,20 @@
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# This file is part of LibreELEC - https://libreelec.tv
# Copyright (C) 2016-present Team LibreELEC
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
#
# OpenELEC is free software: you can redistribute it and/or modify
# LibreELEC is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# OpenELEC is distributed in the hope that it will be useful,
# LibreELEC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenELEC. If not, see <http://www.gnu.org/licenses/>.
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
################################################################################
PKG_NAME="vdr-plugin-restfulapi"
@ -27,11 +28,7 @@ PKG_DEPENDS_TARGET="toolchain vdr cxxtools vdr-plugin-wirbelscan"
PKG_SECTION="multimedia"
PKG_SHORTDESC="vdr-plugin-restfulapi: the restful API for the VDR/"
PKG_LONGDESC="vdr-plugin-restfulapi allows to access many internals of the VDR via a restful API"
pre_make_target() {
# dont build parallel
MAKEFLAGS=-j1
}
PKG_TOOLCHAIN="manual"
make_target() {
VDR_DIR=$(get_build_dir vdr)
@ -51,9 +48,4 @@ post_make_target() {
LIB_NAME=lib${PKG_NAME/-plugin/}
cp --remove-destination $PKG_BUILD/${LIB_NAME}.so $PKG_BUILD/${LIB_NAME}.so.${VDR_APIVERSION}
$STRIP libvdr-*.so*
}
makeinstall_target() {
: # installation not needed, done by create-addon script
}

View File

@ -0,0 +1,11 @@
--- a/Makefile
+++ b/Makefile
@@ -51,7 +51,7 @@ SOFILE = libvdr-$(PLUGIN).so
DEFINES += -DPLUGIN_NAME_I18N='"$(PLUGIN)"'
-LIBS += $(shell cxxtools-config --libs) -lcxxtools-http
+LIBS += $(shell pkg-config --libs cxxtools-http cxxtools)
CONFDIR = $(call PKGCFG,configdir)
PLGCONFDIR = $(CONFDIR)/plugins/$(PLUGIN)

View File

@ -0,0 +1,11 @@
--- a/tools.cpp
+++ b/tools.cpp
@@ -214,7 +214,7 @@ void Settings::initDefault()
SetIp((string)"0.0.0.0");
SetEpgImageDirectory((string)"/var/cache/vdr/epgimages");
SetChannelLogoDirectory((string)"/usr/share/vdr/channel-logos");
- SetWebappDirectory((string)"/var/lib/vdr/plugins/restfulapi/webapp");
+ SetWebappDirectory((string)"/storage/.kodi/addons/service.multimedia.vdr-addon/res/plugins/restfulapi");
SetHeaders((string)"true");
webapp_filetypes_filename = "webapp_file_types.conf";
}

View File

@ -1,12 +0,0 @@
diff -Naur vdr-plugin-restfulapi-0.2.1.4/Makefile vdr-plugin-restfulapi-0.2.1.4.patch/Makefile
--- vdr-plugin-restfulapi-0.2.1.4/Makefile 2015-03-18 23:12:01.000000000 +0100
+++ vdr-plugin-restfulapi-0.2.1.4.patch/Makefile 2016-01-07 05:24:24.036888492 +0100
@@ -49,7 +49,7 @@
DEFINES += -DPLUGIN_NAME_I18N='"$(PLUGIN)"'
-LIBS += $(shell cxxtools-config --libs) -lcxxtools-http
+LIBS += $(shell pkg-config --libs cxxtools-http cxxtools)
CONFDIR = $(call PKGCFG,configdir)
PLGCONFDIR = $(CONFDIR)/plugins/$(PLUGIN)

View File

@ -0,0 +1,45 @@
################################################################################
# This file is part of LibreELEC - https://libreelec.tv
# Copyright (C) 2017-present Team LibreELEC
#
# LibreELEC is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# LibreELEC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
################################################################################
PKG_NAME="vdr-plugin-robotv"
PKG_VERSION="50d4bdc"
PKG_SHA256="062489e55111f0ba2420463cc506865ac59b1c1d080b318cb81d58ec3f4fbd3f"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="https://github.com/pipelka/roboTV"
PKG_URL="https://github.com/pipelka/vdr-plugin-robotv/archive/$PKG_VERSION.tar.gz"
PKG_DEPENDS_TARGET="toolchain vdr avahi"
PKG_SECTION="multimedia"
PKG_SHORTDESC="VDR server plugin for roboTV"
PKG_LONGDESC="RoboTV is a Android TV based frontend for VDR"
PKG_TOOLCHAIN="cmake"
pre_configure_target() {
VDR_DIR=$(get_build_dir vdr)
export PKG_CONFIG_PATH=$VDR_DIR:$PKG_CONFIG_PATH
export CPLUS_INCLUDE_PATH=$VDR_DIR/include
export VDRDIR=$VDR_DIR
}
post_make_target() {
VDR_DIR=$(get_build_dir vdr)
VDR_APIVERSION=`sed -ne '/define APIVERSION/s/^.*"\(.*\)".*$/\1/p' $VDR_DIR/config.h`
LIB_NAME=lib${PKG_NAME/-plugin/}
cp --remove-destination $PKG_BUILD/.$TARGET_NAME/${LIB_NAME}.so $PKG_BUILD/${LIB_NAME}.so.${VDR_APIVERSION}
}

View File

@ -1,24 +1,25 @@
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# This file is part of LibreELEC - https://libreelec.tv
# Copyright (C) 2016-present Team LibreELEC
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
#
# OpenELEC is free software: you can redistribute it and/or modify
# LibreELEC is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# OpenELEC is distributed in the hope that it will be useful,
# LibreELEC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenELEC. If not, see <http://www.gnu.org/licenses/>.
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
################################################################################
PKG_NAME="vdr-plugin-satip"
PKG_VERSION="28cc3ca"
PKG_SHA256="aa72e457472e81280b20c2e596b1993607254c86d4f8c5611fdd1d524400e32e"
PKG_VERSION="82cf548"
PKG_SHA256="f8669aa638e5960ea3d9f6e181beeb997078540be8641a2aaf52cc5badc79c23"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="http://www.saunalahti.fi/~rahrenbe/vdr/satip/"
@ -27,6 +28,7 @@ PKG_DEPENDS_TARGET="toolchain vdr curl tinyxml"
PKG_SECTION="multimedia"
PKG_SHORTDESC="VDR-satip: SAT>IP plugin for VDR"
PKG_LONGDESC="This is an SAT>IP plugin for the Video Disk Recorder (VDR)."
PKG_TOOLCHAIN="manual"
make_target() {
VDR_DIR=$(get_build_dir vdr)
@ -46,9 +48,4 @@ post_make_target() {
LIB_NAME=lib${PKG_NAME/-plugin/}
cp --remove-destination $PKG_BUILD/${LIB_NAME}.so $PKG_BUILD/${LIB_NAME}.so.${VDR_APIVERSION}
$STRIP libvdr-*.so*
}
makeinstall_target() {
: # installation not needed, done by create-addon script
}

View File

@ -1,6 +1,5 @@
diff -Naur satip-2.2.2/Makefile satip-2.2.2.patch/Makefile
--- satip-2.2.2/Makefile 2015-04-26 03:20:00.000000000 +0200
+++ satip-2.2.2.patch/Makefile 2016-01-07 07:33:20.588462880 +0100
--- a/Makefile
+++ b/Makefile
@@ -53,7 +53,7 @@
### Libraries

View File

@ -1,32 +1,34 @@
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# This file is part of LibreELEC - https://libreelec.tv
# Copyright (C) 2016-present Team LibreELEC
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
#
# OpenELEC is free software: you can redistribute it and/or modify
# LibreELEC is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# OpenELEC is distributed in the hope that it will be useful,
# LibreELEC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenELEC. If not, see <http://www.gnu.org/licenses/>.
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
################################################################################
PKG_NAME="vdr-plugin-streamdev"
PKG_VERSION="fc52e92"
PKG_SHA256="4c231f0ce9bd2dcf45c330a7c9733e14f02002e4370b3eeff080f614ef227ed3"
PKG_VERSION="e2a9b97"
PKG_SHA256="adcc08ac19cf98122576bedf63be3396d8b81ee4196c00df0e25c9fb8b7e11b8"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="http://projects.vdr-developer.org/projects/plg-streamdev"
PKG_URL="https://projects.vdr-developer.org/git/vdr-plugin-streamdev.git/snapshot/$PKG_NAME-$PKG_VERSION.tar.bz2"
PKG_URL="https://github.com/vdr-projects/vdr-plugin-streamdev/archive/$PKG_VERSION.tar.gz"
PKG_DEPENDS_TARGET="toolchain vdr openssl"
PKG_SECTION="multimedia"
PKG_SHORTDESC="TV"
PKG_LONGDESC="TV"
PKG_SHORTDESC="This PlugIn is a VDR implementation of Video Transfer and a basic HTTP Streaming Protocol."
PKG_LONGDESC="This PlugIn is a VDR implementation of Video Transfer and a basic HTTP Streaming Protocol."
PKG_TOOLCHAIN="manual"
make_target() {
VDR_DIR=$(get_build_dir vdr)
@ -45,11 +47,4 @@ post_make_target() {
LIB_NAME=lib${PKG_NAME/-plugin/}
cp --remove-destination $PKG_BUILD/server/${LIB_NAME}-server.so $PKG_BUILD/server/${LIB_NAME}-server.so.${VDR_APIVERSION}
cp --remove-destination $PKG_BUILD/client/${LIB_NAME}-client.so $PKG_BUILD/client/${LIB_NAME}-client.so.${VDR_APIVERSION}
$STRIP client/libvdr-*.so*
$STRIP server/libvdr-*.so*
}
makeinstall_target() {
: # installation not needed, done by create-addon script
}

View File

@ -1,8 +1,7 @@
http://www.vdr-portal.de/board17-developer/board97-vdr-core/p1272182-rfc-h-265-frame-parser/#post1272182
diff -ur streamdev-160321-1/server/livestreamer.c streamdev-160321/server/livestreamer.c
--- streamdev-160321-1/server/livestreamer.c 2016-03-21 11:41:52.000000000 +0100
+++ streamdev-160321/server/livestreamer.c 2016-05-03 13:54:07.000000000 +0200
--- a/server/livestreamer.c
+++ b/server/livestreamer.c
@@ -143,6 +143,8 @@
"ISO/IEC 14496-3 Audio with LATM transport syntax",
"0x12", "0x13", "0x14", "0x15", "0x16", "0x17", "0x18", "0x19", "0x1a",

View File

@ -1,24 +1,25 @@
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# This file is part of LibreELEC - https://libreelec.tv
# Copyright (C) 2016-present Team LibreELEC
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
#
# OpenELEC is free software: you can redistribute it and/or modify
# LibreELEC is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# OpenELEC is distributed in the hope that it will be useful,
# LibreELEC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenELEC. If not, see <http://www.gnu.org/licenses/>.
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
################################################################################
PKG_NAME="vdr-plugin-vnsiserver"
PKG_VERSION="63d8151"
PKG_SHA256="acc297c0cc9cd117c6de0b9f1fe0d9c02cd4e8e1abb66da4de34747460ec51e0"
PKG_VERSION="31c8f71"
PKG_SHA256="0ee419f6821c2cfb0a605a9afadaf2e1ae2a69f49d651a7aab4ea7008e913f11"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="https://github.com/FernetMenta/vdr-plugin-vnsiserver"
@ -27,6 +28,7 @@ PKG_DEPENDS_TARGET="toolchain vdr"
PKG_SECTION="multimedia"
PKG_SHORTDESC="VDR plugin to handle Kodi clients."
PKG_LONGDESC="VDR plugin to handle Kodi clients."
PKG_TOOLCHAIN="manual"
make_target() {
VDR_DIR=$(get_build_dir vdr)
@ -45,9 +47,4 @@ post_make_target() {
LIB_NAME=lib${PKG_NAME/-plugin/}
cp --remove-destination $PKG_BUILD/${LIB_NAME}.so $PKG_BUILD/${LIB_NAME}.so.${VDR_APIVERSION}
$STRIP libvdr-*.so*
}
makeinstall_target() {
: # installation not needed, done by create-addon script
}

View File

@ -1,33 +1,35 @@
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# This file is part of LibreELEC - https://libreelec.tv
# Copyright (C) 2016-present Team LibreELEC
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
#
# OpenELEC is free software: you can redistribute it and/or modify
# LibreELEC is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# OpenELEC is distributed in the hope that it will be useful,
# LibreELEC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenELEC. If not, see <http://www.gnu.org/licenses/>.
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
################################################################################
PKG_NAME="vdr-plugin-wirbelscan"
PKG_VERSION="0.0.9"
PKG_SHA256="731137512de0047e7514f72b04c4e8f938c773ea7873c9281b5937e7413d2dc9"
PKG_VERSION="2017.06.04"
PKG_SHA256="c7a792c794fb98dd7f665e1be2271f4a1a957a26c017043fcd4dd8d8b7fd582b"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="http://wirbel.htpc-forum.de/wirbelscan/index2.html"
PKG_URL="http://wirbel.htpc-forum.de/wirbelscan/${PKG_NAME/-plugin/}-$PKG_VERSION.tgz"
PKG_URL="http://wirbel.htpc-forum.de/wirbelscan/${PKG_NAME/-plugin/}-dev-$PKG_VERSION.tgz"
PKG_SOURCE_DIR="wirbelscan-${PKG_VERSION}"
PKG_DEPENDS_TARGET="toolchain vdr"
PKG_SECTION="multimedia"
PKG_SHORTDESC="TV"
PKG_LONGDESC="TV"
PKG_SHORTDESC="Performs a channel scans for DVB-T, DVB-C and DVB-S"
PKG_LONGDESC="Performs a channel scans for DVB-T, DVB-C and DVB-S"
PKG_TOOLCHAIN="manual"
pre_configure_target() {
export CFLAGS="$CFLAGS -fPIC"
@ -37,11 +39,8 @@ pre_configure_target() {
make_target() {
VDR_DIR=$(get_build_dir vdr)
cp backup/Makefile.old Makefile
make VDRDIR=$VDR_DIR \
LIBDIR="." \
LOCALEDIR="./locale"
}
makeinstall_target() {
: # installation not needed, done by create-addon script
}

View File

@ -1,26 +0,0 @@
From 2b6a0e4b41a082655516c3a276a4d74e7a61cd90 Mon Sep 17 00:00:00 2001
From: Stefan Saraev <stefan@saraev.ca>
Date: Mon, 2 Feb 2015 13:22:36 +0200
Subject: [PATCH] fix dvbs scan
using first channel freq from satellites.dat is not good.
---
scanner.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scanner.c b/scanner.c
index 0c29ac2..25d6f8a 100644
--- a/scanner.c
+++ b/scanner.c
@@ -738,7 +738,7 @@ void cScanner::Action(void) {
break;
case SCAN_SATELLITE:
aChannel->SetTransponderData(cSource::FromString(sat_list[this_channellist].source_id),
- sat_list[this_channellist].items[0].intermediate_frequency,
+ sat_list[this_channellist].items[channel].intermediate_frequency,
sat_list[this_channellist].items[channel].symbol_rate,
*ParamsToString('S',
GetVDRPolarizationFromDVB(sat_list[this_channellist].items[0].polarization),
--
1.7.10.4

View File

@ -1,61 +0,0 @@
From 4708fdeab67cae81ee7211a306c6adf0bed24d3c Mon Sep 17 00:00:00 2001
From: Stefan Saraev <stefan@saraev.ca>
Date: Tue, 3 Feb 2015 18:19:17 +0200
Subject: [PATCH] fix wirbelscancontrol
---
common.c | 2 +-
extended_frontend.h | 7 +++----
menusetup.c | 2 +-
3 files changed, 5 insertions(+), 6 deletions(-)
diff --git a/common.c b/common.c
index 04a1e6e..40194d2 100644
--- a/common.c
+++ b/common.c
@@ -54,7 +54,7 @@ void cMySetup::InitSystems(void) {
}
if (DVB_Type >= SCAN_NO_DEVICE || ! systems[DVB_Type]) {
- for (DVB_Type = scantype_t(SCAN_UNDEFINED + 1); DVB_Type < SCAN_NO_DEVICE; DVB_Type = scantype_t(DVB_Type + 1)) {
+ for (DVB_Type = scantype_t(SCAN_TERRESTRIAL); DVB_Type < SCAN_NO_DEVICE; DVB_Type = scantype_t(DVB_Type + 1)) {
if (systems[DVB_Type])
break;
}
diff --git a/extended_frontend.h b/extended_frontend.h
index 680594e..bcdb11f 100644
--- a/extended_frontend.h
+++ b/extended_frontend.h
@@ -152,13 +152,12 @@ typedef enum {
* 20120107 wirbel
*/
typedef enum {
- SCAN_UNDEFINED,
- SCAN_SATELLITE,
- SCAN_CABLE,
SCAN_TERRESTRIAL,
- SCAN_TERRCABLE_ATSC, /* I dislike this mixture of terr and cable. fix later, as it leads to problems now. */
+ SCAN_CABLE,
+ SCAN_SATELLITE,
SCAN_PVRINPUT,
SCAN_PVRINPUT_FM,
+ SCAN_TERRCABLE_ATSC, /* I dislike this mixture of terr and cable. fix later, as it leads to problems now. */
SCAN_NO_DEVICE,
SCAN_TRANSPONDER=999
} scantype_t;
diff --git a/menusetup.c b/menusetup.c
index daeccb1..46087be 100644
--- a/menusetup.c
+++ b/menusetup.c
@@ -22,7 +22,7 @@
using namespace COUNTRY;
static const char * ScannerDesc = "wirbelscan scan thread";
-static const char * DVB_Types[] = {"NOTHING","DVB-S/S2","DVB-C","DVB-T/T2","ATSC","pvrinput","pvrinput FM", "no device found"};
+static const char * DVB_Types[] = {"DVB-T/T2", "DVB-C", "DVB-S/S2", "pvrinput", "pvrinput FM", "ATSC", "no device found"};
cMenuScanning * MenuScanning = NULL; // pointer to actual menu
cScanner * Scanner = NULL;
--
1.7.10.4

View File

@ -1,19 +1,20 @@
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# This file is part of LibreELEC - https://libreelec.tv
# Copyright (C) 2016-present Team LibreELEC
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
#
# OpenELEC is free software: you can redistribute it and/or modify
# LibreELEC is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# OpenELEC is distributed in the hope that it will be useful,
# LibreELEC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenELEC. If not, see <http://www.gnu.org/licenses/>.
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
################################################################################
PKG_NAME="vdr-plugin-wirbelscancontrol"
@ -26,8 +27,9 @@ PKG_URL="http://wirbel.htpc-forum.de/wirbelscancontrol/${PKG_NAME/-plugin/}-$PKG
PKG_SOURCE_DIR="wirbelscancontrol-${PKG_VERSION}"
PKG_DEPENDS_TARGET="toolchain vdr vdr-plugin-wirbelscan"
PKG_SECTION="multimedia"
PKG_SHORTDESC="TV"
PKG_LONGDESC="TV"
PKG_SHORTDESC="Adds menu entry for wirbelscan at VDR."
PKG_LONGDESC="Adds menu entry for wirbelscan at VDR."
PKG_TOOLCHAIN="manual"
pre_configure_target() {
export CFLAGS="$CFLAGS -fPIC"
@ -46,7 +48,3 @@ make_target() {
LIBDIR="." \
LOCALEDIR="./locale"
}
makeinstall_target() {
: # installation not needed, done by create-addon script
}

View File

@ -1,14 +1,6 @@
From 60bb89fa8f5d29e72e06c68c0b48a374ac95d522 Mon Sep 17 00:00:00 2001
From: Stefan Saraev <stefan@saraev.ca>
Date: Mon, 9 Jun 2014 22:04:41 +0300
Subject: [PATCH] dont build i18n
---
Makefile | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/Makefile b/Makefile
index f3ae479..89e2970 100644
--- a/Makefile
+++ b/Makefile
@@ -73,7 +73,7 @@ UNCRUSTIFY_FILES = $(PLUGIN).c scanmenu.c scanmenu.h
@ -20,6 +12,4 @@ index f3ae479..89e2970 100644
### Implicit rules:
--
1.7.2.5

View File

@ -0,0 +1,59 @@
--- a/scanmenu.c
+++ b/scanmenu.c
@@ -255,6 +255,9 @@
{
eOSState state = cOsdMenu::ProcessKey(Key);
int direction = 0;
+#if APIVERSNUM >= 20301
+ LOCK_CHANNELS_READ;
+#endif
switch (Key) {
case kLeft: direction = -1;
break;
@@ -268,7 +271,11 @@
case SETSCAN:
osdstatus = SCANNING;
start = time(NULL);
+#if APIVERSNUM < 20301
channelcount0 = Channels.Count();
+#else
+ channelcount0 = Channels->Count();
+#endif
SetHelp(tr("Stop"), NULL, NULL, NULL);
TransferSetup();
PutCommand(CmdStartScan);
@@ -655,7 +662,8 @@
sbuf = cString::sprintf("%s (%d%% transponders from scan list + %u queued)", buf, status.progress, status.nextTransponders);
ProgressBar->SetText(*sbuf);
- if (TV1 && TV2 && TV3 && TV4 && TV5)
+#if APIVERSNUM < 20301
+ if (TV1 && TV2 && TV3 && TV4 && TV5) {
switch (Channels.Count() - channelcount0) {
default:;
case 5: TV5->SetText(Channels.GetByNumber(Channels.Count()-4)->Name());
@@ -665,8 +673,23 @@
case 1: TV1->SetText(Channels.GetByNumber(Channels.Count()-0)->Name());
case 0:;
}
-
+ }
sbuf = cString::sprintf("%s%d", tr("New channels: "), Channels.Count() - channelcount0);
+#else
+ LOCK_CHANNELS_READ;
+ if (TV1 && TV2 && TV3 && TV4 && TV5) {
+ switch (Channels->Count() - channelcount0) {
+ default:;
+ case 5: TV5->SetText(Channels->GetByNumber(Channels->Count()-4)->Name());
+ case 4: TV4->SetText(Channels->GetByNumber(Channels->Count()-3)->Name());
+ case 3: TV3->SetText(Channels->GetByNumber(Channels->Count()-2)->Name());
+ case 2: TV2->SetText(Channels->GetByNumber(Channels->Count()-1)->Name());
+ case 1: TV1->SetText(Channels->GetByNumber(Channels->Count()-0)->Name());
+ case 0:;
+ }
+ }
+ sbuf = cString::sprintf("%s%d", tr("New channels: "), Channels->Count() - channelcount0);
+#endif
if (CH) CH->SetText(*sbuf);
Display();

View File

@ -1,32 +1,34 @@
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# This file is part of LibreELEC - https://libreelec.tv
# Copyright (C) 2016-present Team LibreELEC
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
#
# OpenELEC is free software: you can redistribute it and/or modify
# LibreELEC is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# OpenELEC is distributed in the hope that it will be useful,
# LibreELEC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenELEC. If not, see <http://www.gnu.org/licenses/>.
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
################################################################################
PKG_NAME="vdr-plugin-xmltv2vdr"
PKG_VERSION="b48e0bec"
PKG_SHA256="280d6cf45e6727711b43eefffd5f04bac53f456e2e6e6b519990dd7fff03611d"
PKG_VERSION="ec7bd92"
PKG_SHA256="eacc91062095563d8adc93873b373ddb34b076a8c0a9e5a86f6220d1d5d892e9"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="http://projects.vdr-developer.org/projects/plg-xmltv2vdr"
PKG_URL="http://projects.vdr-developer.org/git/vdr-plugin-xmltv2vdr.git/snapshot/${PKG_NAME}-${PKG_VERSION}.tar.gz"
PKG_URL="https://github.com/vdr-projects/vdr-plugin-xmltv2vdr/archive/${PKG_VERSION}.tar.gz"
PKG_DEPENDS_TARGET="toolchain vdr sqlite curl libzip libxml2 libxslt enca pcre"
PKG_SECTION="multimedia"
PKG_SHORTDESC="vdr-xmltv2vdr"
PKG_LONGDESC="vdr-xmltv2vdr"
PKG_SHORTDESC="xmltv2vdr imports data in xmltv format"
PKG_LONGDESC="xmltv2vdr imports data in xmltv format"
PKG_TOOLCHAIN="manual"
pre_configure_target() {
export CFLAGS="$CFLAGS -fPIC"
@ -47,9 +49,4 @@ post_make_target() {
make -j1
cd -
$STRIP dist/epgdata2xmltv/epgdata2xmltv
$STRIP libvdr-*.so*
}
makeinstall_target() {
: # installation not needed, done by create-addon script
}

View File

@ -1,14 +1,6 @@
From c2121393b05a756266fe728f83eaddbd3755ce13 Mon Sep 17 00:00:00 2001
From: Stefan Saraev <stefan@saraev.ca>
Date: Mon, 16 Jun 2014 12:14:33 +0300
Subject: [PATCH] dont build i18n
---
Makefile | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/Makefile b/Makefile
index aa344a4..819b5b0 100644
--- a/Makefile
+++ b/Makefile
@@ -62,7 +62,7 @@ OBJS = $(PLUGIN).o soundex.o extpipe.o parse.o source.o import.o event.o setup.o
@ -20,6 +12,4 @@ index aa344a4..819b5b0 100644
### Implicit rules:
--
1.7.2.5

View File

@ -1,12 +0,0 @@
diff -Naur a/import.cpp b/import.cpp
--- a/import.cpp 2016-08-23 15:16:10.362347074 +0100
+++ b/import.cpp 2016-08-23 15:16:22.814431356 +0100
@@ -250,7 +250,7 @@
char *cImport::Add2Description(char *description, const char *Name, int Value)
{
char *value=NULL;
- if (asprintf(&value,"%i",Value)==-1) return false;
+ if (asprintf(&value,"%i",Value)==-1) return NULL;
description = strcatrealloc(description,Name);
description = strcatrealloc(description,": ");
description = strcatrealloc(description,value);

View File

@ -1,33 +1,35 @@
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# This file is part of LibreELEC - https://libreelec.tv
# Copyright (C) 2016-present Team LibreELEC
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
# Copyright (C) 2011 Anthony Nash (nash.ant@gmail.com)
#
# OpenELEC is free software: you can redistribute it and/or modify
# LibreELEC is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# OpenELEC is distributed in the hope that it will be useful,
# LibreELEC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenELEC. If not, see <http://www.gnu.org/licenses/>.
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
################################################################################
PKG_NAME="vdr"
PKG_VERSION="2.2.0"
PKG_SHA256="7c259e1ed1f39d93d23df1d5d0f85dd2a1fa9ec1dadff79e5833e2ff3ebf6c4e"
PKG_VERSION="2.3.8"
PKG_SHA256="d871170ee90ef2fc6293eefb44262b82b2e1f00f934681c721da7bd30e45bf22"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="http://www.tvdr.de"
PKG_URL="ftp://ftp.tvdr.de/vdr/$PKG_NAME-$PKG_VERSION.tar.bz2"
PKG_URL="ftp://ftp.tvdr.de/vdr/Developer/$PKG_NAME-$PKG_VERSION.tar.bz2"
PKG_DEPENDS_TARGET="toolchain fontconfig freetype libcap libiconv libjpeg-turbo bzip2"
PKG_SECTION="multimedia"
PKG_SHORTDESC="vdr: A powerful DVB TV application"
PKG_LONGDESC="This project describes how to build your own digital satellite receiver and video disk recorder. It is based mainly on the DVB-S digital satellite receiver card, which used to be available from Fujitsu Siemens and the driver software developed by the LinuxTV project."
PKG_TOOLCHAIN="manual"
post_unpack() {
rm -rf $PKG_BUILD/PLUGINS/src/skincurses
@ -54,7 +56,3 @@ make_target() {
make vdr vdr.pc
make include-dir
}
makeinstall_target() {
: # installation not needed, done by create-addon script
}

View File

@ -1,14 +1,6 @@
From 973c66c3d4e7418e53932c719b4cb3345b38da9e Mon Sep 17 00:00:00 2001
From: Stefan Saraev <stefan@saraev.ca>
Date: Sat, 12 Oct 2013 21:40:12 +0300
Subject: [PATCH] decrease channels.conf autosave delay
---
vdr.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/vdr.c b/vdr.c
index c63eeca..1fb0c57 100644
--- a/vdr.c
+++ b/vdr.c
@@ -74,7 +74,7 @@
@ -20,6 +12,4 @@ index c63eeca..1fb0c57 100644
#define DEVICEREADYTIMEOUT 30 // seconds to wait until all devices are ready
#define MENUTIMEOUT 120 // seconds of user inactivity after which an OSD display is closed
#define TIMERCHECKDELTA 10 // seconds between checks for timers that need to see their channel
--
1.7.2.5

View File

@ -1,11 +0,0 @@
diff -Nru vdr-1.7.15-vanilla/pat.c vdr-1.7.15-disable_ca_updates/pat.c
--- vdr-1.7.15-vanilla/pat.c 2010-06-06 19:11:15.000000000 +0300
+++ vdr-1.7.15-disable_ca_updates/pat.c 2010-06-06 20:42:47.000000000 +0300
@@ -490,6 +490,7 @@
}
if (Setup.UpdateChannels >= 2) {
Channel->SetPids(Vpid, Ppid, Vtype, Apids, Atypes, ALangs, Dpids, Dtypes, DLangs, Spids, SLangs, Tpid);
+ if (!cSource::IsType(Channel->Source(), 'I'))
Channel->SetCaIds(CaDescriptors->CaIds());
Channel->SetSubtitlingDescriptors(SubtitlingTypes, CompositionPageIds, AncillaryPageIds);
}

View File

@ -0,0 +1,29 @@
remove logspam
ERROR: no OSD provider available - using dummy OSD!
--- a/osd.c
+++ b/osd.c
@@ -2027,8 +2027,6 @@ cOsd *cOsdProvider::NewOsd(int Left, int Top, uint Level)
}
return Osd;
}
- else
- esyslog("ERROR: no OSD provider available - using dummy OSD!");
return new cOsd(Left, Top, 999); // create a dummy cOsd, so that access won't result in a segfault
}
--- a/vdr.c
+++ b/vdr.c
@@ -765,12 +765,6 @@ int main(int argc, char *argv[])
Folders.Load(AddDirectory(ConfigDirectory, "folders.conf"));
CamResponsesLoad(AddDirectory(ConfigDirectory, "camresponses.conf"), true);
- if (!*cFont::GetFontFileName(Setup.FontOsd)) {
- const char *msg = "no fonts available - OSD will not show any text!";
- fprintf(stderr, "vdr: %s\n", msg);
- esyslog("ERROR: %s", msg);
- }
-
// Recordings:
cRecordings::Update();

View File

@ -1,148 +0,0 @@
From ce4d2a08e6448b7bfab68b89a12a156ed3294a63 Mon Sep 17 00:00:00 2001
From: Thomas Reufer <thomas@reufer.ch>
Date: Mon, 28 Mar 2016 19:47:14 +0200
Subject: [PATCH] Implement H.265 frame parser
---
pat.c | 1 +
remux.c | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
2 files changed, 82 insertions(+), 3 deletions(-)
diff --git a/pat.c b/pat.c
index beb5609..bb7e5ae 100644
--- a/pat.c
+++ b/pat.c
@@ -439,6 +439,7 @@ void cPatFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
case 1: // STREAMTYPE_11172_VIDEO
case 2: // STREAMTYPE_13818_VIDEO
case 0x1B: // H.264
+ case 0x24: // H.265
Vpid = esPid;
Ppid = pmt.getPCRPid();
Vtype = stream.getStreamType();
diff --git a/remux.c b/remux.c
index 6c07efc..fe87160 100644
--- a/remux.c
+++ b/remux.c
@@ -708,6 +708,7 @@ void cPatPmtParser::ParsePmt(const uchar *Data, int Length)
case 0x01: // STREAMTYPE_11172_VIDEO
case 0x02: // STREAMTYPE_13818_VIDEO
case 0x1B: // H.264
+ case 0x24: // H.265
vpid = stream.getPid();
vtype = stream.getStreamType();
ppid = Pmt.getPCRPid();
@@ -1204,16 +1205,16 @@ private:
nutSequenceParameterSet = 7,
nutAccessUnitDelimiter = 9,
};
- cTsPayload tsPayload;
uchar byte; // holds the current byte value in case of bitwise access
int bit; // the bit index into the current byte (-1 if we're not in bit reading mode)
int zeroBytes; // the number of consecutive zero bytes (to detect 0x000003)
- uint32_t scanner;
// Identifiers written in '_' notation as in "ITU-T H.264":
bool separate_colour_plane_flag;
int log2_max_frame_num;
bool frame_mbs_only_flag;
- //
+protected:
+ cTsPayload tsPayload;
+ uint32_t scanner;
bool gotAccessUnitDelimiter;
bool gotSequenceParameterSet;
uchar GetByte(bool Raw = false);
@@ -1430,6 +1431,81 @@ void cH264Parser::ParseSliceHeader(void)
}
}
+// --- cH265Parser -----------------------------------------------------------
+
+class cH265Parser : public cH264Parser {
+private:
+ enum eNalUnitType {
+ nutSliceSegmentTrailingN = 0,
+ nutSliceSegmentTrailingR = 1,
+ nutSliceSegmentTSAN = 2,
+ nutSliceSegmentTSAR = 3,
+ nutSliceSegmentSTSAN = 4,
+ nutSliceSegmentSTSAR = 5,
+ nutSliceSegmentRADLN = 6,
+ nutSliceSegmentRADLR = 7,
+ nutSliceSegmentRASLN = 8,
+ nutSliceSegmentRASLR = 9,
+ nutSliceSegmentBLAWLP = 16,
+ nutSliceSegmentBLAWRADL = 17,
+ nutSliceSegmentBLANLP = 18,
+ nutSliceSegmentIDRWRADL = 19,
+ nutSliceSegmentIDRNLP = 20,
+ nutSliceSegmentCRANUT = 21,
+ nutVideoParameterSet = 32,
+ nutSequenceParameterSet = 33,
+ nutPictureParameterSet = 34,
+ nutAccessUnitDelimiter = 35,
+ nutEndOfSequence = 36,
+ nutEndOfBitstream = 37,
+ nutFillerData = 38,
+ nutPrefixSEI = 39,
+ nutSuffixSEI = 40,
+ nutNonVCLRes0 = 41,
+ nutNonVCLRes3 = 44,
+ nutUnspecified0 = 48,
+ nutUnspecified7 = 55,
+ };
+public:
+ cH265Parser(void);
+ virtual int Parse(const uchar *Data, int Length, int Pid);
+ };
+
+cH265Parser::cH265Parser(void) :
+ cH264Parser()
+{
+}
+
+int cH265Parser::Parse(const uchar *Data, int Length, int Pid)
+{
+ newFrame = independentFrame = false;
+ tsPayload.Setup(const_cast<uchar *>(Data), Length, Pid);
+ if (TsPayloadStart(Data)) {
+ tsPayload.SkipPesHeader();
+ scanner = EMPTY_SCANNER;
+ }
+ for (;;) {
+ scanner = (scanner << 8) | GetByte(true);
+ if ((scanner & 0xFFFFFF00) == 0x00000100) { // NAL unit start
+ uchar NalUnitType = (scanner >> 1) & 0x3F;
+ GetByte(); // nuh_layer_id + nuh_temporal_id_plus1
+ if (NalUnitType <= nutSliceSegmentRASLR || (NalUnitType >= nutSliceSegmentBLAWLP && NalUnitType <= nutSliceSegmentCRANUT)) {
+ if (NalUnitType == nutSliceSegmentIDRWRADL || NalUnitType == nutSliceSegmentIDRNLP || NalUnitType == nutSliceSegmentCRANUT)
+ independentFrame = true;
+ if (GetBit()) { // first_slice_segment_in_pic_flag
+ newFrame = true;
+ tsPayload.Statistics();
+ }
+ break;
+ }
+ }
+ if (tsPayload.AtPayloadStart() // stop at any new payload start to have the buffer refilled if necessary
+ || tsPayload.Eof()) // or if we're out of data
+ break;
+ }
+ return tsPayload.Used();
+}
+
// --- cFrameDetector --------------------------------------------------------
cFrameDetector::cFrameDetector(int Pid, int Type)
@@ -1463,6 +1539,8 @@ void cFrameDetector::SetPid(int Pid, int Type)
parser = new cMpeg2Parser;
else if (type == 0x1B)
parser = new cH264Parser;
+ else if (type == 0x24)
+ parser = new cH265Parser;
else if (type == 0x04 || type == 0x06) // MPEG audio or AC3 audio
parser = new cAudioParser;
else if (type != 0)
--
2.0.5

View File

@ -1,41 +0,0 @@
--- vdr-2.2.0/dvbdevice.c.org 2015-01-14 13:09:19.000000000 +0100
+++ vdr-2.2.0/dvbdevice.c 2016-06-25 15:50:40.619609021 +0200
@@ -1089,6 +1089,17 @@
NULL
};
+#define NUMDELIVERYSYSTEMNAMES (sizeof(DeliverySystemNames)/sizeof(*DeliverySystemNames)-1)
+
+const char *GetDeliverySystemName(int n)
+{
+ if (n < 0 || n >= NUMDELIVERYSYSTEMNAMES)
+ return DeliverySystemNames[0];
+
+ return DeliverySystemNames[n];
+}
+
+
cDvbDevice::cDvbDevice(int Adapter, int Frontend)
{
adapter = Adapter;
@@ -1185,9 +1196,9 @@
{
if (dvbTuner) {
if (dvbTuner->FrontendType() != SYS_UNDEFINED)
- return DeliverySystemNames[dvbTuner->FrontendType()];
+ return GetDeliverySystemName(dvbTuner->FrontendType());
if (numDeliverySystems)
- return DeliverySystemNames[deliverySystems[0]]; // to have some reasonable default
+ return GetDeliverySystemName(deliverySystems[0]); // to have some reasonable default
}
return "";
}
@@ -1318,7 +1329,7 @@
if (numDeliverySystems > 0) {
cString ds("");
for (int i = 0; i < numDeliverySystems; i++)
- ds = cString::sprintf("%s%s%s", *ds, i ? "," : "", DeliverySystemNames[deliverySystems[i]]);
+ ds = cString::sprintf("%s%s%s", *ds, i ? "," : "", GetDeliverySystemName(deliverySystems[i]));
cString ms("");
if (frontendInfo.caps & FE_CAN_QPSK) { numModulations++; ms = cString::sprintf("%s%s%s", *ms, **ms ? "," : "", MapToUserString(QPSK, ModulationValues)); }
if (frontendInfo.caps & FE_CAN_QAM_16) { numModulations++; ms = cString::sprintf("%s%s%s", *ms, **ms ? "," : "", MapToUserString(QAM_16, ModulationValues)); }

View File

@ -1,153 +0,0 @@
Description: dynamically resize buffer for caids
Forwarded: yes
Author: Lars Hanisch <dvb@flensrocker.de>
diff --git a/ci.c b/ci.c
index ffc7ff7..8bfae23 100644
--- a/ci.c
+++ b/ci.c
@@ -25,6 +25,8 @@
#include "skins.h"
#include "tools.h"
+#define CAID_BUFSIZE 1024
+
// Set these to 'true' for debug output:
static bool DumpTPDUDataTransfer = false;
static bool DebugProtocol = false;
@@ -763,9 +765,12 @@ private:
int transponder;
int programNumber;
int caSystemIds[MAXCASYSTEMIDS + 1]; // list is zero terminated!
+ uint8_t *caDescriptors;
+ int caBufSize;
void AddCaDescriptors(int Length, const uint8_t *Data);
public:
cCiCaPmt(uint8_t CmdId, int Source, int Transponder, int ProgramNumber, const int *CaSystemIds);
+ ~cCiCaPmt(void);
uint8_t CmdId(void) { return cmdId; }
void SetListManagement(uint8_t ListManagement);
uint8_t ListManagement(void) { return capmt[0]; }
@@ -784,8 +789,15 @@ cCiCaPmt::cCiCaPmt(uint8_t CmdId, int Source, int Transponder, int ProgramNumber
caSystemIds[i] = CaSystemIds[i];
}
caSystemIds[i] = 0;
- uint8_t caDescriptors[512];
- int caDescriptorsLength = GetCaDescriptors(source, transponder, programNumber, caSystemIds, sizeof(caDescriptors), caDescriptors, 0);
+ caBufSize = CAID_BUFSIZE;
+ caDescriptors = new uint8_t[caBufSize];
+ int caDescriptorsLength = GetCaDescriptors(source, transponder, programNumber, caSystemIds, caBufSize, caDescriptors, 0);
+ if (caDescriptorsLength < 0) {
+ delete [] caDescriptors;
+ caBufSize = -caDescriptorsLength + 8;
+ caDescriptors = new uint8_t[caBufSize];
+ caDescriptorsLength = GetCaDescriptors(source, transponder, programNumber, caSystemIds, caBufSize, caDescriptors, 0);
+ }
length = 0;
capmt[length++] = CPLM_ONLY;
capmt[length++] = (ProgramNumber >> 8) & 0xFF;
@@ -797,6 +809,11 @@ cCiCaPmt::cCiCaPmt(uint8_t CmdId, int Source, int Transponder, int ProgramNumber
AddCaDescriptors(caDescriptorsLength, caDescriptors);
}
+cCiCaPmt::~cCiCaPmt(void)
+{
+ delete [] caDescriptors;
+}
+
void cCiCaPmt::SetListManagement(uint8_t ListManagement)
{
capmt[0] = ListManagement;
@@ -805,21 +822,34 @@ void cCiCaPmt::SetListManagement(uint8_t ListManagement)
void cCiCaPmt::AddPid(int Pid, uint8_t StreamType)
{
if (Pid) {
- uint8_t caDescriptors[512];
- int caDescriptorsLength = GetCaDescriptors(source, transponder, programNumber, caSystemIds, sizeof(caDescriptors), caDescriptors, Pid);
- //XXX buffer overflow check???
- capmt[length++] = StreamType;
- capmt[length++] = (Pid >> 8) & 0xFF;
- capmt[length++] = Pid & 0xFF;
- esInfoLengthPos = length;
- capmt[length++] = 0x00; // ES_info_length H (at ES level)
- capmt[length++] = 0x00; // ES_info_length L
- AddCaDescriptors(caDescriptorsLength, caDescriptors);
+ int caDescriptorsLength = GetCaDescriptors(source, transponder, programNumber, caSystemIds, caBufSize, caDescriptors, Pid);
+ if (caDescriptorsLength < 0) {
+ delete [] caDescriptors;
+ caBufSize = -caDescriptorsLength + 8;
+ caDescriptors = new uint8_t[caBufSize];
+ caDescriptorsLength = GetCaDescriptors(source, transponder, programNumber, caSystemIds, caBufSize, caDescriptors, Pid);
+ }
+ if (length + 5 < int(sizeof(capmt))) {
+ capmt[length++] = StreamType;
+ capmt[length++] = (Pid >> 8) & 0xFF;
+ capmt[length++] = Pid & 0xFF;
+ esInfoLengthPos = length;
+ capmt[length++] = 0x00; // ES_info_length H (at ES level)
+ capmt[length++] = 0x00; // ES_info_length L
+ AddCaDescriptors(caDescriptorsLength, caDescriptors);
+ }
+ else
+ esyslog("ERROR: buffer overflow in CA descriptor");
}
}
void cCiCaPmt::AddCaDescriptors(int Length, const uint8_t *Data)
{
+ if (Length < 0) {
+ dsyslog("DEBUG: calling AddCaDescriptors with Length %d", Length);
+ return;
+ }
+
if (esInfoLengthPos) {
if (length + Length < int(sizeof(capmt))) {
if (Length || cmdId == CPCI_QUERY) {
diff --git a/pat.c b/pat.c
index 98d306e..9dfbc62 100644
--- a/pat.c
+++ b/pat.c
@@ -165,21 +165,25 @@ int cCaDescriptors::GetCaDescriptors(const int *CaSystemIds, int BufSize, uchar
return 0;
if (BufSize > 0 && Data) {
int length = 0;
+ bool tooSmall = false;
for (cCaDescriptor *d = caDescriptors.First(); d; d = caDescriptors.Next(d)) {
if (EsPid < 0 || d->EsPid() == EsPid) {
const int *caids = CaSystemIds;
do {
if (*caids == 0xFFFF || d->CaSystem() == *caids) {
- if (length + d->Length() <= BufSize) {
+ if (length + d->Length() <= BufSize)
memcpy(Data + length, d->Data(), d->Length());
- length += d->Length();
- }
else
- return -1;
+ tooSmall = true;
+ length += d->Length();
}
} while (*++caids);
}
}
+ if (tooSmall) {
+ dsyslog("DEBUG: buffer for ca-descriptors too small (%d, needed %d)", BufSize, length);
+ return -length;
+ }
return length;
}
return -1;
diff --git a/pat.h b/pat.h
index 19e60dc..8bf0738 100644
--- a/pat.h
+++ b/pat.h
@@ -45,7 +45,7 @@ int GetCaDescriptors(int Source, int Transponder, int ServiceId, const int *CaSy
///< are copied that match one of the given CA system IDs (or all of them, if CaSystemIds
///< is 0xFFFF).
///< Returns the number of bytes copied into Data (0 if no CA descriptors are
- ///< available), or -1 if BufSize was too small to hold all CA descriptors.
+ ///< available), or -(NeededBufSize) if BufSize was too small to hold all CA descriptors.
int GetCaPids(int Source, int Transponder, int ServiceId, const int *CaSystemIds, int BufSize, int *Pids);
///< Gets all CA pids for a given channel.

View File

@ -1,108 +0,0 @@
Backport from 2.3.3
diff -Naur vdr-2.2.0/diseqc.c vdr-2.2.0.fixed/diseqc.c
--- vdr-2.2.0/diseqc.c 2015-01-26 13:02:14.000000000 +0100
+++ vdr-2.2.0.fixed/diseqc.c 2017-05-11 17:47:26.770740387 +0200
@@ -253,10 +253,10 @@
return result;
}
-uint cDiseqc::SetScrFrequency(uint SatFrequency, const cScr *Scr, uint8_t *Codes) const
+int cDiseqc::SetScrFrequency(int SatFrequency, const cScr *Scr, uint8_t *Codes) const
{
if ((Codes[0] & 0xF0) == 0x70 ) { // EN50607 aka JESS
- uint t = SatFrequency == 0 ? 0 : (SatFrequency - 100);
+ int t = SatFrequency == 0 ? 0 : (SatFrequency - 100);
if (t < 2048 && Scr->Channel() >= 0 && Scr->Channel() < 32) {
Codes[1] = t >> 8 | Scr->Channel() << 3;
Codes[2] = t;
@@ -266,7 +266,7 @@
}
}
else { // EN50494 aka Unicable
- uint t = SatFrequency == 0 ? 0 : (SatFrequency + Scr->UserBand() + 2) / 4 - 350; // '+ 2' together with '/ 4' results in rounding!
+ int t = SatFrequency == 0 ? 0 : (SatFrequency + Scr->UserBand() + 2) / 4 - 350; // '+ 2' together with '/ 4' results in rounding!
if (t < 1024 && Scr->Channel() >= 0 && Scr->Channel() < 8) {
Codes[3] = t >> 8 | (t == 0 ? 0 : scrBank << 2) | Scr->Channel() << 5;
Codes[4] = t;
@@ -399,7 +399,7 @@
return NULL;
}
-cDiseqc::eDiseqcActions cDiseqc::Execute(const char **CurrentAction, uchar *Codes, uint8_t *MaxCodes, const cScr *Scr, uint *Frequency) const
+cDiseqc::eDiseqcActions cDiseqc::Execute(const char **CurrentAction, uchar *Codes, uint8_t *MaxCodes, const cScr *Scr, int *Frequency) const
{
if (!*CurrentAction)
*CurrentAction = commands;
diff -Naur vdr-2.2.0/diseqc.h vdr-2.2.0.fixed/diseqc.h
--- vdr-2.2.0/diseqc.h 2013-06-12 13:52:17.000000000 +0200
+++ vdr-2.2.0.fixed/diseqc.h 2017-05-11 17:46:02.381565779 +0200
@@ -86,7 +86,7 @@
mutable int scrBank;
char *commands;
bool parsing;
- uint SetScrFrequency(uint SatFrequency, const cScr *Scr, uint8_t *Codes) const;
+ int SetScrFrequency(int SatFrequency, const cScr *Scr, uint8_t *Codes) const;
int SetScrPin(const cScr *Scr, uint8_t *Codes) const;
const char *Wait(const char *s) const;
const char *GetPosition(const char *s) const;
@@ -96,7 +96,7 @@
cDiseqc(void);
~cDiseqc();
bool Parse(const char *s);
- eDiseqcActions Execute(const char **CurrentAction, uchar *Codes, uint8_t *MaxCodes, const cScr *Scr, uint *Frequency) const;
+ eDiseqcActions Execute(const char **CurrentAction, uchar *Codes, uint8_t *MaxCodes, const cScr *Scr, int *Frequency) const;
///< Parses the DiSEqC commands and returns the appropriate action code
///< with every call. CurrentAction must be the address of a character pointer,
///< which is initialized to NULL. This pointer is used internally while parsing
diff -Naur vdr-2.2.0/dvbdevice.c vdr-2.2.0.fixed/dvbdevice.c
--- vdr-2.2.0/dvbdevice.c 2017-05-11 17:49:21.744005466 +0200
+++ vdr-2.2.0.fixed/dvbdevice.c 2017-05-11 17:40:40.052025008 +0200
@@ -329,7 +329,7 @@
void ClearEventQueue(void) const;
bool GetFrontendStatus(fe_status_t &Status) const;
cPositioner *GetPositioner(void);
- void ExecuteDiseqc(const cDiseqc *Diseqc, unsigned int *Frequency);
+ void ExecuteDiseqc(const cDiseqc *Diseqc, int *Frequency);
void ResetToneAndVoltage(void);
bool SetFrontend(void);
virtual void Action(void);
@@ -696,7 +696,7 @@
return positioner;
}
-void cDvbTuner::ExecuteDiseqc(const cDiseqc *Diseqc, unsigned int *Frequency)
+void cDvbTuner::ExecuteDiseqc(const cDiseqc *Diseqc, int *Frequency)
{
if (!lnbPowerTurnedOn) {
CHECK(ioctl(fd_frontend, FE_SET_VOLTAGE, SEC_VOLTAGE_13)); // must explicitly turn on LNB power
@@ -806,7 +806,7 @@
SETCMD(DTV_DELIVERY_SYSTEM, frontendType);
if (frontendType == SYS_DVBS || frontendType == SYS_DVBS2) {
- unsigned int frequency = channel.Frequency();
+ int frequency = channel.Frequency();
if (Setup.DiSEqC) {
if (const cDiseqc *diseqc = Diseqcs.Get(device->CardIndex() + 1, channel.Source(), frequency, dtp.Polarization(), &scr)) {
frequency -= diseqc->Lof();
@@ -829,7 +829,7 @@
}
else {
int tone = SEC_TONE_OFF;
- if (frequency < (unsigned int)Setup.LnbSLOF) {
+ if (frequency < Setup.LnbSLOF) {
frequency -= Setup.LnbFrequLo;
tone = SEC_TONE_OFF;
}
diff -Naur vdr-2.2.0/remux.c vdr-2.2.0.fixed/remux.c
--- vdr-2.2.0/remux.c 2017-05-11 17:49:21.740005437 +0200
+++ vdr-2.2.0.fixed/remux.c 2017-05-11 17:38:29.322690063 +0200
@@ -1627,7 +1627,7 @@
Div += parser->IFrameTemporalReferenceOffset();
if (Div <= 0)
Div = 1;
- uint32_t Delta = ptsValues[0] / Div;
+ int Delta = ptsValues[0] / Div;
// determine frame info:
if (isVideo) {
if (abs(Delta - 3600) <= 1)

View File

@ -1,3 +1,9 @@
107
- add robotv plugin
- add DDCI2 plugin
- update VDR to 2.3.8
- update all addons
106
- update Sat>IP plugin to 28cc3ca
- update VNSI to 63d8151

View File

@ -1,33 +1,36 @@
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# This file is part of LibreELEC - https://libreelec.tv
# Copyright (C) 2016-present Team LibreELEC
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
# Copyright (C) 2011 Anthony Nash (nash.ant@gmail.com)
#
# OpenELEC is free software: you can redistribute it and/or modify
# LibreELEC is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# OpenELEC is distributed in the hope that it will be useful,
# LibreELEC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenELEC. If not, see <http://www.gnu.org/licenses/>.
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
################################################################################
PKG_NAME="vdr-addon"
PKG_VERSION="2.2"
PKG_REV="106"
PKG_VERSION="2.3"
PKG_REV="107"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="https://libreelec.tv"
PKG_URL=""
PKG_DEPENDS_TARGET="toolchain vdr vdr-plugin-dummydevice vdr-plugin-dvbapi vdr-plugin-eepg vdr-plugin-epgfixer vdr-plugin-epgsearch vdr-plugin-iptv vdr-plugin-live vdr-plugin-restfulapi vdr-plugin-satip vdr-plugin-streamdev vdr-plugin-vnsiserver vdr-plugin-wirbelscan vdr-plugin-wirbelscancontrol vdr-plugin-xmltv2vdr"
PKG_DEPENDS_TARGET="toolchain vdr vdr-plugin-ddci2 vdr-plugin-dummydevice vdr-plugin-dvbapi vdr-plugin-eepg vdr-plugin-epgfixer \
vdr-plugin-epgsearch vdr-plugin-iptv vdr-plugin-live vdr-plugin-restfulapi vdr-plugin-robotv vdr-plugin-satip \
vdr-plugin-streamdev vdr-plugin-vnsiserver vdr-plugin-wirbelscan vdr-plugin-wirbelscancontrol vdr-plugin-xmltv2vdr"
PKG_SECTION="service.multimedia"
PKG_SHORTDESC="VDR: a TV streaming server for Linux"
PKG_LONGDESC="VDR (2.2.0) is a TV streaming server for Linux supporting DVB-S/S2, DVB-C, DVB-T/T2, IPTV and SAT>IP"
PKG_LONGDESC="VDR (2.3.x) is a TV streaming server for Linux supporting DVB-S/S2, DVB-C, DVB-T/T2, IPTV and SAT>IP"
PKG_TOOLCHAIN="manual"
PKG_IS_ADDON="yes"
@ -79,6 +82,8 @@ addon() {
cp -PR $(get_build_dir vdr-plugin-satip)/libvdr*.so.* $ADDON_BUILD/$PKG_ADDON_ID/plugin
cp -PR $VDR_PLUGIN_EPGFIXER_DIR/libvdr*.so.* $ADDON_BUILD/$PKG_ADDON_ID/plugin
cp -PR $VDR_PLUGIN_RESTFULAPI_DIR/libvdr*.so.* $ADDON_BUILD/$PKG_ADDON_ID/plugin
cp -PR $(get_build_dir vdr-plugin-robotv)/libvdr*.so.* $ADDON_BUILD/$PKG_ADDON_ID/plugin
cp -PR $(get_build_dir vdr-plugin-ddci2)/libvdr*.so.* $ADDON_BUILD/$PKG_ADDON_ID/plugin
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/config/plugins/eepg

32
packages/addons/service/vdr-addon/source/bin/vdr.start Executable file → Normal file
View File

@ -1,21 +1,22 @@
#!/bin/sh
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# This file is part of LibreELEC - https://libreelec.tv
# Copyright (C) 2016-present Team LibreELEC
# Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv)
#
# OpenELEC is free software: you can redistribute it and/or modify
# LibreELEC is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# OpenELEC is distributed in the hope that it will be useful,
# LibreELEC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenELEC. If not, see <http://www.gnu.org/licenses/>.
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
################################################################################
. /etc/profile
@ -48,7 +49,7 @@ ADDON_CACHE_DIR="$ADDON_HOME/cache"
mkdir -p $ADDON_CACHE_DIR
VDR_ARG="-g /tmp --no-kbd"
if [ "$DEBUG" = "yes" ]; then
if [ "$DEBUG" = "yes" -o "$ENABLE_VDR_DEBUG" == "true" ]; then
VDR_ARG="$VDR_ARG --log=3"
else
VDR_ARG="$VDR_ARG --log=1"
@ -108,8 +109,13 @@ fi
if [ "$ENABLE_EPGSEARCH" == "true" ] ; then
VDR_ARG="$VDR_ARG -P epgsearch"
fi
if [ "$ENABLE_DUMMYDEVICE" == "true" ] ; then
if [ "$ENABLE_DUMMYDEVICE" == "true" \
-o ! \( -d /dev/dvb/adapter0 -o "$WAIT_FOR_FEINIT" == "true" \
-o "$ENABLE_SATIP" == "true" \
-o "$ENABLE_STREAMDEV_CLIENT" == "true" \) ] ; then
VDR_ARG="$VDR_ARG -P dummydevice"
else
VNSI_ARG=" -d"
fi
if [ "$ENABLE_SATIP" == "true" ] ; then
VDR_ARG="$VDR_ARG -P 'satip -d $SATIP_NUM_DEVICES'"
@ -130,6 +136,12 @@ if [ "$ENABLE_XMLTV2VDR" == "true" ] ; then
cp $source /var/lib/epgsources
done
fi
if [ "$ENABLE_ROBOTV" == "true" ] ; then
VDR_ARG="$VDR_ARG -P robotv"
fi
if [ "$ENABLE_DDCI2" == "true" ] ; then
VDR_ARG="$VDR_ARG -P ddci2"
fi
if [ ! -d "$ADDON_HOME/epgimages" ]; then
mkdir -p "$ADDON_HOME/epgimages"
@ -144,7 +156,7 @@ RESTFULAPI_ARGS="$RESTFULAPI_ARGS --channellogos=\"$ADDON_HOME/channellogos\""
VDR_ARG="$VDR_ARG -P 'restfulapi $RESTFULAPI_ARGS'"
# vnsi last
VDR_ARG="$VDR_ARG -P vnsiserver"
VDR_ARG="$VDR_ARG -P 'vnsiserver$VNSI_ARG'"
cd $ADDON_DIR/config
mkdir -p $ADDON_CONFIG_DIR
@ -178,4 +190,10 @@ if [ "$WAIT_FOR_FEINIT" == "true" ] ; then
fi
fix_config
if [ "$ENABLE_VDR_DEBUG" == "true" ] ; then
/usr/bin/journalctl -b -0 -f -u service.multimedia.vdr-addon > $ADDON_LOG_FILE &
sleep 1
fi
eval LANG=en_US.UTF-8 VDR_CHARSET_OVERRIDE="$VDR_CHARSET_OVERRIDE" exec vdr.bin $VDR_ARG

View File

@ -1,17 +1,35 @@
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv)
# This file is part of LibreELEC - https://libreelec.tv
# Copyright (C) 2018-present Team LibreELEC
#
# OpenELEC is free software: you can redistribute it and/or modify
# LibreELEC is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# OpenELEC is distributed in the hope that it will be useful,
# LibreELEC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenELEC. If not, see <http://www.gnu.org/licenses/>.
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
################################################################################
import subprocess
import xbmc
import xbmcaddon
class Monitor(xbmc.Monitor):
def __init__(self, *args, **kwargs):
xbmc.Monitor.__init__(self)
self.id = xbmcaddon.Addon().getAddonInfo('id')
def onSettingsChanged(self):
subprocess.call(['systemctl', 'restart', self.id])
if __name__ == "__main__":
Monitor().waitForAbort()

View File

@ -0,0 +1,150 @@
# Kodi Media Center language file
# Addon Name: vdr-addon
# Addon id: service.multimedia.vdr-addon
# Addon Provider: Team LibreELEC
msgid ""
msgstr ""
msgctxt "#30000"
msgid "DVB"
msgstr ""
msgctxt "#30001"
msgid "PLUGINS"
msgstr ""
msgctxt "#30002"
msgid "VDR"
msgstr ""
msgctxt "#30003"
msgid "DVB Configuration"
msgstr ""
msgctxt "#30004"
msgid "Unload DVB modules before suspend"
msgstr ""
msgctxt "#30005"
msgid "Wait for frontend initialization"
msgstr ""
msgctxt "#30006"
msgid "Number of adapters to wait for"
msgstr ""
msgctxt "#30007"
msgid "Enable charset override"
msgstr ""
msgctxt "#30008"
msgid "- charset"
msgstr ""
msgctxt "#30009"
msgid "Plugin Configuration"
msgstr ""
msgctxt "#30010"
msgid "Enable plugin: iptv"
msgstr ""
msgctxt "#30011"
msgid "Enable plugin: streamdev-client"
msgstr ""
msgctxt "#30012"
msgid "Enable plugin: streamdev-server"
msgstr ""
msgctxt "#30013"
msgid "Enable plugin: dvbapi (softcam)"
msgstr ""
msgctxt "#30014"
msgid "Enable plugin: live"
msgstr ""
msgctxt "#30015"
msgid "- listen on ip"
msgstr ""
msgctxt "#30016"
msgid "- listen on port"
msgstr ""
msgctxt "#30017"
msgid "Enable plugin: epgsearch"
msgstr ""
msgctxt "#30018"
msgid "Enable plugin: xmltv2vdr"
msgstr ""
msgctxt "#30019"
msgid "Enable plugin: extended EPG"
msgstr ""
msgctxt "#30020"
msgid "Enable plugin: dummydevice"
msgstr ""
msgctxt "#30021"
msgid "Enable plugin: satip"
msgstr ""
msgctxt "#30022"
msgid "Enable plugin: epgfixer"
msgstr ""
msgctxt "#30023"
msgid "VDR Configuration"
msgstr ""
msgctxt "#30024"
msgid "VDR Video Dir"
msgstr ""
msgctxt "#30025"
msgid "Enable external recdmd"
msgstr ""
msgctxt "#30026"
msgid "External recdmd path"
msgstr ""
msgctxt "#30027"
msgid "- number of devices"
msgstr ""
msgctxt "#30028"
msgid "restfulapi plugin options"
msgstr ""
msgctxt "#30029"
msgid "- listen on ip"
msgstr ""
msgctxt "#30030"
msgid "- listen on port"
msgstr ""
msgctxt "#30031"
msgid "Enable plugin: roboTV"
msgstr ""
msgctxt "#30032"
msgid "Enable plugin: DDCI2"
msgstr ""
msgctxt "#30033"
msgid "DEBUG"
msgstr ""
msgctxt "#30034"
msgid "VDR Debugging"
msgstr ""
msgctxt "#30035"
msgid "Enable Debug Log"
msgstr ""

View File

@ -1,34 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<strings>
<string id="1000">DVB</string>
<string id="1001">Plugins</string>
<string id="1002">VDR</string>
<string id="1020">DVB Configuration</string>
<string id="1021">Unload DVB modules before suspend</string>
<string id="1022">Wait for frontend initialization</string>
<string id="1023">Number of adapters to wait for</string>
<string id="1024">Enable charset override</string>
<string id="1025">- charset</string>
<string id="1030">Plugin Configuration</string>
<string id="1031">Enable plugin: iptv</string>
<string id="1032">Enable plugin: streamdev-client</string>
<string id="1033">Enable plugin: streamdev-server</string>
<string id="1036">Enable softcam (dvbapi)</string>
<string id="1038">Enable plugin: live</string>
<string id="1039">- listen on ip</string>
<string id="1040">- listen on port</string>
<string id="1044">Enable plugin: epgsearch</string>
<string id="1045">Enable plugin: xmltv2vdr</string>
<string id="1046">Enable plugin: extended EPG</string>
<string id="1047">Enable plugin: dummydevice</string>
<string id="1048">Enable plugin: satip</string>
<string id="1049">Enable plugin: epgfixer</string>
<string id="1051">VDR Configuration</string>
<string id="1052">VDR Video Dir</string>
<string id="1056">Enable external recdmd</string>
<string id="1057">External recdmd path</string>
<string id="1058">- number of devices</string>
<string id="1070">restfulapi plugin options</string>
<string id="1071">- listen on ip</string>
<string id="1072">- listen on port</string>
</strings>

View File

@ -1,43 +1,49 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<settings>
<category label="1000">
<setting label="1020" type="lsep"/>
<setting type="sep" />
<setting id="WAIT_FOR_FEINIT" type="bool" label="1022" default="false" />
<setting id="NUM_ADAPTERS" type="slider" range="1,16" option="int" label="1023" default="1" enable="eq(-1,true)" />
<setting id="REMOVE_MODULES" type="text" label="1021" values="" default=""/>
<setting id="ENABLE_CHARSET_OVERRIDE" type="bool" label="1024" default="false" />
<setting id="CHARSET_OVERRIDE_STR" type="text" label="1025" visible="!eq(-1,false)" default="" />
</category>
<category label="1002">
<setting label="1051" type="lsep"/>
<setting type="sep" />
<setting id="VDR_VIDEO_DIR" type="folder" label="1052" value="" default="/storage/videos" />
<category label="30000">
<setting label="30003" type="lsep" />
<setting type="sep" />
<setting id="ENABLE_EXTERNAL_RECCMD" type="bool" label="1056" default="false" />
<setting id="EXTERNAL_RECCMD_PATH" type="file" label="1057" visible="!eq(-1,false)" default="" />
<setting id="WAIT_FOR_FEINIT" type="bool" label="30005" default="false" />
<setting id="NUM_ADAPTERS" type="slider" range="1,16" option="int" label="30006" default="1" enable="eq(-1,true)" />
<setting id="REMOVE_MODULES" type="text" label="30004" values="" default="" />
<setting id="ENABLE_CHARSET_OVERRIDE" type="bool" label="30007" default="false" />
<setting id="CHARSET_OVERRIDE_STR" type="text" label="30008" visible="!eq(-1,false)" default="" />
</category>
<category label="1001">
<setting label="1030" type="lsep"/>
<setting type="sep" />
<setting id="ENABLE_IPTV" type="bool" label="1031" default="false" />
<setting id="IPTV_NUM_DEVICES" type="slider" option="int" range="1,4" label="1058" visible="!eq(-1,false)" default="1" />
<setting id="ENABLE_STREAMDEV_CLIENT" type="bool" label="1032" default="false" />
<setting id="ENABLE_STREAMDEV_SERVER" type="bool" label="1033" default="false" />
<setting id="ENABLE_LIVE" type="bool" label="1038" default="false" />
<setting id="LIVE_IP" type="ipaddress" label="1039" values="" visible="!eq(-1,false)" default="0.0.0.0"/>
<setting id="LIVE_PORT" type="number" label="1040" values="" visible="!eq(-2,false)" default="8008"/>
<setting id="ENABLE_EEPG" type="bool" label="1046" default="false" />
<setting id="ENABLE_EPGSEARCH" type="bool" label="1044" default="false" />
<setting id="ENABLE_XMLTV2VDR" type="bool" label="1045" default="false" />
<setting id="ENABLE_DUMMYDEVICE" type="bool" label="1047" default="false" />
<setting id="ENABLE_SATIP" type="bool" label="1048" default="false" />
<setting id="SATIP_NUM_DEVICES" type="slider" option="int" range="1,10" label="1058" visible="!eq(-1,false)" default="1" />
<setting id="ENABLE_EPGFIXER" type="bool" label="1049" default="false" />
<setting type="sep" />
<setting id="ENABLE_SOFTCAM" type="bool" label="1036" default="true" />
<setting type="lsep" label="1070" />
<setting id="RESTFULAPI_IP" type="ipaddress" label="1071" values="" default="127.0.0.1"/>
<setting id="RESTFULAPI_PORT" type="number" label="1072" values="" default="8002"/>
<category label="30002">
<setting label="30023" type="lsep"/>
<setting type="sep" />
<setting id="VDR_VIDEO_DIR" type="folder" label="30024" value="" default="/storage/videos" />
<setting type="sep" />
<setting id="ENABLE_EXTERNAL_RECCMD" type="bool" label="30025" default="false" />
<setting id="EXTERNAL_RECCMD_PATH" type="file" label="30026" visible="!eq(-1,false)" default="" />
</category>
<category label="30001">
<setting label="30009" type="lsep" />
<setting type="sep" />
<setting id="ENABLE_DDCI2" type="bool" label="30032" default="false" />
<setting id="ENABLE_DUMMYDEVICE" type="bool" label="30020" default="false" />
<setting id="ENABLE_SOFTCAM" type="bool" label="30013" default="false" />
<setting id="ENABLE_EPGFIXER" type="bool" label="30022" default="false" />
<setting id="ENABLE_EPGSEARCH" type="bool" label="30017" default="false" />
<setting id="ENABLE_EEPG" type="bool" label="30019" default="false" />
<setting id="ENABLE_IPTV" type="bool" label="30010" default="false" />
<setting id="IPTV_NUM_DEVICES" type="slider" option="int" range="1,4" label="30027" visible="!eq(-1,false)" default="1" />
<setting id="ENABLE_LIVE" type="bool" label="30014" default="false" />
<setting id="LIVE_IP" type="ipaddress" label="30015" values="" visible="!eq(-1,false)" default="0.0.0.0" />
<setting id="LIVE_PORT" type="number" label="30016" values="" visible="!eq(-2,false)" default="8008" />
<setting id="ENABLE_ROBOTV" type="bool" label="30031" default="false" />
<setting id="ENABLE_SATIP" type="bool" label="30021" default="false" />
<setting id="SATIP_NUM_DEVICES" type="slider" option="int" range="1,10" label="30027" visible="!eq(-1,false)" default="1" />
<setting id="ENABLE_STREAMDEV_CLIENT" type="bool" label="30011" default="false" />
<setting id="ENABLE_STREAMDEV_SERVER" type="bool" label="30012" default="false" />
<setting id="ENABLE_XMLTV2VDR" type="bool" label="30018" default="false" />
<setting type="lsep" label="30028" />
<setting id="RESTFULAPI_IP" type="ipaddress" label="30029" values="" default="127.0.0.1" />
<setting id="RESTFULAPI_PORT" type="number" label="30030" values="" default="8002" />
</category>
<category label="30033">
<setting label="30034" type="lsep" />
<setting type="sep" />
<setting id="ENABLE_VDR_DEBUG" type="bool" label="30035" default="false" />
</category>
</settings>

View File

@ -1,27 +1,30 @@
<settings>
<setting id="WAIT_FOR_FEINIT" value="false" />
<setting id="NUM_ADAPTERS" value="1" />
<setting id="REMOVE_MODULES" value="" />
<setting id="VDR_VIDEO_DIR" value="/storage/videos" />
<setting id="ENABLE_IPTV" value="false" />
<setting id="ENABLE_SOFTCAM" value="true" />
<setting id="ENABLE_STREAMDEV_CLIENT" value="false" />
<setting id="ENABLE_STREAMDEV_SERVER" value="false" />
<setting id="ENABLE_LIVE" value="false" />
<setting id="LIVE_IP" value="0.0.0.0" />
<setting id="LIVE_PORT" value="8008" />
<setting id="ENABLE_EEPG" value="false" />
<setting id="ENABLE_EPGFIXER" value="false" />
<setting id="ENABLE_EPGSEARCH" value="false" />
<setting id="ENABLE_XMLTV2VDR" value="false" />
<setting id="ENABLE_DUMMYDEVICE" value="false" />
<setting id="ENABLE_SATIP" value="false" />
<setting id="ENABLE_EXTERNAL_RECCMD" value="false" />
<setting id="EXTERNAL_RECCMD_PATH" value="" />
<setting id="ENABLE_CHARSET_OVERRIDE" value="false" />
<setting id="CHARSET_OVERRIDE_STR" value="" />
<setting id="IPTV_NUM_DEVICES" value="1" />
<setting id="SATIP_NUM_DEVICES" value="1" />
<setting id="RESTFULAPI_IP" value="127.0.0.1" />
<setting id="RESTFULAPI_PORT" value="8002" />
<settings version="2">
<setting id="CHARSET_OVERRIDE_STR" default="true"></setting>
<setting id="ENABLE_CHARSET_OVERRIDE" default="true">false</setting>
<setting id="ENABLE_DDCI2" default="true">false</setting>
<setting id="ENABLE_DUMMYDEVICE" default="true">false</setting>
<setting id="ENABLE_EEPG" default="true">false</setting>
<setting id="ENABLE_EPGFIXER" default="true">false</setting>
<setting id="ENABLE_EPGSEARCH" default="true">false</setting>
<setting id="ENABLE_EXTERNAL_RECCMD" default="true">false</setting>
<setting id="ENABLE_IPTV" default="true">false</setting>
<setting id="ENABLE_LIVE" default="true">false</setting>
<setting id="ENABLE_ROBOTV" default="true">false</setting>
<setting id="ENABLE_SATIP" default="true">false</setting>
<setting id="ENABLE_SOFTCAM">true</setting>
<setting id="ENABLE_STREAMDEV_CLIENT" default="true">false</setting>
<setting id="ENABLE_STREAMDEV_SERVER" default="true">false</setting>
<setting id="ENABLE_VDR_DEBUG" default="true">false</setting>
<setting id="ENABLE_XMLTV2VDR" default="true">false</setting>
<setting id="EXTERNAL_RECCMD_PATH" default="true"></setting>
<setting id="IPTV_NUM_DEVICES">1</setting>
<setting id="LIVE_IP" default="true">0.0.0.0</setting>
<setting id="LIVE_PORT">8008</setting>
<setting id="NUM_ADAPTERS">1</setting>
<setting id="REMOVE_MODULES" default="true"></setting>
<setting id="RESTFULAPI_IP" default="true">127.0.0.1</setting>
<setting id="RESTFULAPI_PORT">8002</setting>
<setting id="SATIP_NUM_DEVICES">1</setting>
<setting id="VDR_VIDEO_DIR" default="true">/storage/videos</setting>
<setting id="WAIT_FOR_FEINIT" default="true">false</setting>
</settings>

View File

@ -4,7 +4,7 @@ After=graphical.target
[Service]
ExecStart=/bin/sh -c "exec sh /storage/.kodi/addons/service.multimedia.vdr-addon/bin/vdr.start"
TimeoutStopSec=2
TimeoutStopSec=4
Restart=always
RestartSec=2
StartLimitInterval=0