mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-29 13:46:49 +00:00
Merge branch 'master' of github.com:OpenELEC/OpenELEC.tv into openelec-next
This commit is contained in:
commit
6f4449ea66
@ -22,5 +22,9 @@
|
||||
|
||||
. config/options $1
|
||||
|
||||
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID
|
||||
cp -PR $PKG_DIR/config/settings.xml* $ADDON_BUILD/$PKG_ADDON_ID/settings-default.xml
|
||||
cp -PR $PKG_DIR/config/xmltv-config* $ADDON_BUILD/$PKG_ADDON_ID/xmltv-config
|
||||
|
||||
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/bin
|
||||
cp -P $PKG_BUILD/build.Linux/tvheadend $ADDON_BUILD/$PKG_ADDON_ID/bin
|
||||
|
@ -1,3 +1,9 @@
|
||||
1.0.1
|
||||
- add XMLTV tv_file_grab support
|
||||
- add XMLTV configuration support
|
||||
- add teletext support patch
|
||||
- add fix memory leak patch
|
||||
|
||||
1.0.0
|
||||
- prepare for OpenELEC-1.0 release
|
||||
|
||||
|
@ -0,0 +1,4 @@
|
||||
<settings>
|
||||
<setting id="XMLTV_LOCATION" value="" />
|
||||
<setting id="XMLTV_TYPE" value="NONE" />
|
||||
</settings>
|
@ -0,0 +1,14 @@
|
||||
{
|
||||
"grabbers": [
|
||||
{
|
||||
"path": "/storage/.xbmc/addons/service.multimedia.hts-tvheadend/bin/tv_grab_file",
|
||||
"description": "tv_grag_file is a simple grabber that just read the ~/.xmltv/tv_grab_file.xmltv file",
|
||||
"version": "0.1\n",
|
||||
"mtime": 1318774706,
|
||||
"capabilities": 1
|
||||
}
|
||||
],
|
||||
"grab-interval": 12,
|
||||
"grab-enabled": 1,
|
||||
"current-grabber": "/storage/.xbmc/addons/service.multimedia.hts-tvheadend/bin/tv_grab_file"
|
||||
}
|
@ -0,0 +1,112 @@
|
||||
From 3b407aa2053b1db3316873acd05c64319676eb34 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Jernej=20Fija=C4=8Dko?= <jernej@jernej-ThinkCentre-M91p.(none)>
|
||||
Date: Fri, 30 Sep 2011 12:56:01 +0200
|
||||
Subject: [PATCH] Deliver raw teletext to clients that are able to display it (e.g. XBMC)
|
||||
|
||||
---
|
||||
src/parsers.c | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
src/tsdemux.c | 7 +++----
|
||||
2 files changed, 58 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/src/parsers.c b/src/parsers.c
|
||||
index 9b7337d..68c7996 100644
|
||||
--- a/src/parsers.c
|
||||
+++ b/src/parsers.c
|
||||
@@ -102,6 +102,9 @@ static void parse_aac(service_t *t, elementary_stream_t *st, const uint8_t *data
|
||||
static void parse_subtitles(service_t *t, elementary_stream_t *st,
|
||||
const uint8_t *data, int len, int start);
|
||||
|
||||
+static void parse_teletext(service_t *t, elementary_stream_t *st,
|
||||
+ const uint8_t *data, int len, int start);
|
||||
+
|
||||
static int parse_mpa(service_t *t, elementary_stream_t *st, size_t len,
|
||||
uint32_t next_startcode, int sc_offset);
|
||||
|
||||
@@ -158,6 +161,10 @@ parse_mpeg_ts(service_t *t, elementary_stream_t *st, const uint8_t *data,
|
||||
parse_aac(t, st, data, len, start);
|
||||
break;
|
||||
|
||||
+ case SCT_TELETEXT:
|
||||
+ parse_teletext(t, st, data, len, start);
|
||||
+ break;
|
||||
+
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -1232,6 +1239,54 @@ parse_subtitles(service_t *t, elementary_stream_t *st, const uint8_t *data,
|
||||
}
|
||||
}
|
||||
|
||||
+/**
|
||||
+ * Teletext parser
|
||||
+ */
|
||||
+static void
|
||||
+parse_teletext(service_t *t, elementary_stream_t *st, const uint8_t *data,
|
||||
+ int len, int start)
|
||||
+{
|
||||
+ th_pkt_t *pkt;
|
||||
+ int psize, hlen;
|
||||
+ const uint8_t *buf;
|
||||
+ const uint8_t *d;
|
||||
+ if(start) {
|
||||
+ st->es_parser_state = 1;
|
||||
+ st->es_buf.sb_err = 0;
|
||||
+ st->es_parser_ptr = 0;
|
||||
+ sbuf_reset(&st->es_buf);
|
||||
+ }
|
||||
+
|
||||
+ if(st->es_parser_state == 0)
|
||||
+ return;
|
||||
+
|
||||
+ sbuf_append(&st->es_buf, data, len);
|
||||
+
|
||||
+ if(st->es_buf.sb_ptr < 6)
|
||||
+ return;
|
||||
+ d = st->es_buf.sb_data;
|
||||
+
|
||||
+ psize = d[4] << 8 | d[5];
|
||||
+
|
||||
+ if(st->es_buf.sb_ptr != psize + 6)
|
||||
+ return;
|
||||
+
|
||||
+ st->es_parser_state = 0;
|
||||
+
|
||||
+ hlen = parse_pes_header(t, st, d + 6, st->es_buf.sb_ptr - 6);
|
||||
+ if(hlen < 0)
|
||||
+ return;
|
||||
+
|
||||
+ psize -= hlen;
|
||||
+ buf = d + 6 + hlen;
|
||||
+
|
||||
+ if(psize >= 46) {
|
||||
+
|
||||
+ pkt = pkt_alloc(buf, psize, st->es_curpts, st->es_curdts);
|
||||
+ pkt->pkt_commercial = t->s_tt_commercial_advice;
|
||||
+ parser_deliver(t, st, pkt);
|
||||
+ }
|
||||
+}
|
||||
|
||||
/**
|
||||
*
|
||||
diff --git a/src/tsdemux.c b/src/tsdemux.c
|
||||
index 897fe1d..5fdaf8b 100644
|
||||
--- a/src/tsdemux.c
|
||||
+++ b/src/tsdemux.c
|
||||
@@ -110,11 +110,10 @@ ts_recv_packet0(service_t *t, elementary_stream_t *st, const uint8_t *tsb)
|
||||
got_section, st);
|
||||
break;
|
||||
|
||||
- case SCT_TELETEXT:
|
||||
- teletext_input(t, st, tsb);
|
||||
- break;
|
||||
-
|
||||
default:
|
||||
+ if(st->es_type == SCT_TELETEXT)
|
||||
+ teletext_input(t, st, tsb);
|
||||
+
|
||||
if(off > 188)
|
||||
break;
|
||||
|
||||
--
|
||||
1.7.3.1
|
||||
|
@ -0,0 +1,26 @@
|
||||
From 60e5a1014c52e926fb7dbb12392f60a473e44d2c Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Jernej=20Fija=C4=8Dko?= <jernej@jernej-ThinkCentre-M91p.(none)>
|
||||
Date: Fri, 30 Sep 2011 13:23:46 +0200
|
||||
Subject: [PATCH] Fix memory leak in queue size protection
|
||||
|
||||
---
|
||||
src/htsp.c | 3 +++
|
||||
1 files changed, 3 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/src/htsp.c b/src/htsp.c
|
||||
index 8bb803b..f786a88 100644
|
||||
--- a/src/htsp.c
|
||||
+++ b/src/htsp.c
|
||||
@@ -1508,6 +1508,9 @@ htsp_stream_deliver(htsp_subscription_t *hs, th_pkt_t *pkt)
|
||||
|
||||
hs->hs_dropstats[pkt->pkt_frametype]++;
|
||||
|
||||
+ // destroy the already created htsmsg to avoid memory leaks
|
||||
+ htsmsg_destroy(m);
|
||||
+
|
||||
/* Queue size protection */
|
||||
pkt_ref_dec(pkt);
|
||||
return;
|
||||
--
|
||||
1.7.3.1
|
||||
|
58
packages/addons/service/multimedia/hts-tvheadend/source/bin/tv_grab_file
Executable file
58
packages/addons/service/multimedia/hts-tvheadend/source/bin/tv_grab_file
Executable file
@ -0,0 +1,58 @@
|
||||
#!/bin/sh
|
||||
|
||||
ADDON_HOME="$HOME/.xbmc/userdata/addon_data/service.multimedia.hts-tvheadend"
|
||||
ADDON_SETTINGS="$ADDON_HOME/settings.xml"
|
||||
XMLTV_TYPE=`grep XMLTV_TYPE $ADDON_SETTINGS | awk '{print $3 }' | sed -e "s,value=,," -e "s,\",,g"`
|
||||
XMLTV_LOCATION=`grep XMLTV_LOCATION $ADDON_SETTINGS | awk '{print $3 }' | sed -e "s,value=,," -e "s,\",,g"`
|
||||
|
||||
dflag=
|
||||
vflag=
|
||||
cflag=
|
||||
|
||||
if [[ $# -lt 1 ]]; then
|
||||
if [ "$XMLTV_TYPE" = "FILE" ]; then
|
||||
cat "$XMLTV_LOCATION"
|
||||
exit 0
|
||||
elif [ "$XMLTV_TYPE" = "WEB" ]; then
|
||||
wget -qO - "$XMLTV_LOCATION"
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
||||
for arg; do
|
||||
delim=""
|
||||
case "$arg" in
|
||||
#translate --gnu-long-options to -g (short options)
|
||||
--description) args="${args}-d ";;
|
||||
--version) args="${args}-v ";;
|
||||
--capabilities) args="${args}-c ";;
|
||||
#pass through anything else
|
||||
*) [[ "${arg:0:1}" == "-" ]] || delim="\""
|
||||
args="${args}${delim}${arg}${delim} ";;
|
||||
esac
|
||||
done
|
||||
|
||||
#Reset the positional parameters to the short options
|
||||
eval set -- $args
|
||||
|
||||
while getopts "dvc" option; do
|
||||
case $option in
|
||||
d) dflag=1;;
|
||||
v) vflag=1;;
|
||||
c) cflag=1;;
|
||||
\?) printf "unknown option: -%s\n" $OPTARG
|
||||
printf "Usage: %s: [--description] [--version] [--capabilities] \n" $(basename $0)
|
||||
exit 2
|
||||
;;
|
||||
esac >&2
|
||||
done
|
||||
|
||||
if [ "$dflag" ]; then
|
||||
printf "tv_grab_file is a simple grabber that just read the local or web XMLTV formated file\n"
|
||||
fi
|
||||
if [ "$vflag" ]; then
|
||||
printf "0.1\n"
|
||||
fi
|
||||
if [ "$cflag" ]; then
|
||||
printf "baseline\n"
|
||||
fi
|
@ -23,10 +23,27 @@
|
||||
ADDON_DIR="$HOME/.xbmc/addons/service.multimedia.hts-tvheadend"
|
||||
ADDON_HOME="$HOME/.xbmc/userdata/addon_data/service.multimedia.hts-tvheadend"
|
||||
LOG_FILE="$ADDON_HOME/service.log"
|
||||
ADDON_SETTINGS="$ADDON_HOME/settings.xml"
|
||||
XMLTV_FILE="$ADDON_DIR/bin/tv_grab_file"
|
||||
XMLTV_SETTINGS_DIR="$ADDON_HOME/xmltv"
|
||||
XMLTV_SETTINGS_FILE="$XMLTV_SETTINGS_DIR/config"
|
||||
|
||||
if [ ! -f "$ADDON_SETTINGS" ]; then
|
||||
cp $ADDON_DIR/settings-default.xml $ADDON_SETTINGS
|
||||
fi
|
||||
|
||||
if [ ! -f "$XMLTV_SETTINGS_FILE" ]; then
|
||||
mkdir -p $XMLTV_SETTINGS_DIR
|
||||
cp $ADDON_DIR/xmltv-config $XMLTV_SETTINGS_FILE
|
||||
fi
|
||||
|
||||
if [ ! -f "$XMLTV_FILE" ]; then
|
||||
chmod +x $XMLTV_FILE
|
||||
fi
|
||||
|
||||
TVHEADEND_ARG="-f -C -s -u root -g root -c $ADDON_HOME"
|
||||
|
||||
mkdir -p $ADDON_HOME
|
||||
if [ ! $(pidof tvheadend) ];then
|
||||
tvheadend $TVHEADEND_ARG &>$LOG_FILE
|
||||
fi
|
||||
fi
|
||||
|
@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<strings>
|
||||
|
||||
<!-- SABnzbd-Suite -->
|
||||
<string id="1000">XMLTV</string>
|
||||
<string id="1011">XMLTV configuration</string>
|
||||
<string id="1011">XMLTV source type</string>
|
||||
<string id="1012">XMLTV location</string>
|
||||
|
||||
</strings>
|
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<settings>
|
||||
|
||||
<!-- HTS TVHEADEND -->
|
||||
<category label="1000">
|
||||
<setting label="1010" type="lsep"/>
|
||||
<setting type="sep" />
|
||||
<setting id="XMLTV_TYPE" type="labelenum" label="1011" values="NONE|FILE|WEB" sort="yes" default="NONE"/>
|
||||
<setting id="XMLTV_LOCATION" type="text" label="1012" default="" enable="!eq(-1,1)"/>
|
||||
</category>
|
||||
</settings>
|
@ -0,0 +1,15 @@
|
||||
diff -Naur xbmc-10.1-Dharma/xbmc/FileSystem/FileCurl.cpp xbmc-10.1-Dharma.patch/xbmc/FileSystem/FileCurl.cpp
|
||||
--- xbmc-10.1-Dharma/xbmc/FileSystem/FileCurl.cpp 2011-03-08 02:49:14.000000000 +0100
|
||||
+++ xbmc-10.1-Dharma.patch/xbmc/FileSystem/FileCurl.cpp 2011-10-17 19:21:04.180783870 +0200
|
||||
@@ -803,9 +803,9 @@
|
||||
// Detect whether we are "online" or not! Very simple and dirty!
|
||||
bool CFileCurl::IsInternet(bool checkDNS /* = true */)
|
||||
{
|
||||
- CStdString strURL = "http://www.google.com";
|
||||
+ CStdString strURL = "http://www.openelec.tv";
|
||||
if (!checkDNS)
|
||||
- strURL = "http://74.125.19.103"; // www.google.com ip
|
||||
+ strURL = "http://212.101.13.10"; // www.openelec.tv ip
|
||||
|
||||
bool found = Exists(strURL);
|
||||
Close();
|
Loading…
x
Reference in New Issue
Block a user