diff --git a/packages/addons/service/multimedia/hts-tvheadend/addon b/packages/addons/service/multimedia/hts-tvheadend/addon index 3e0ab9a67c..ad2c079534 100755 --- a/packages/addons/service/multimedia/hts-tvheadend/addon +++ b/packages/addons/service/multimedia/hts-tvheadend/addon @@ -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 diff --git a/packages/addons/service/multimedia/hts-tvheadend/changelog.txt b/packages/addons/service/multimedia/hts-tvheadend/changelog.txt index 5022c0489f..59409030eb 100644 --- a/packages/addons/service/multimedia/hts-tvheadend/changelog.txt +++ b/packages/addons/service/multimedia/hts-tvheadend/changelog.txt @@ -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 diff --git a/packages/addons/service/multimedia/hts-tvheadend/config/settings.xml b/packages/addons/service/multimedia/hts-tvheadend/config/settings.xml new file mode 100644 index 0000000000..6be91dac2a --- /dev/null +++ b/packages/addons/service/multimedia/hts-tvheadend/config/settings.xml @@ -0,0 +1,4 @@ + + + + diff --git a/packages/addons/service/multimedia/hts-tvheadend/config/xmltv-config b/packages/addons/service/multimedia/hts-tvheadend/config/xmltv-config new file mode 100644 index 0000000000..7439a5de59 --- /dev/null +++ b/packages/addons/service/multimedia/hts-tvheadend/config/xmltv-config @@ -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" +} diff --git a/packages/addons/service/multimedia/hts-tvheadend/patches/hts-tvheadend-c88a646-deliver_raw_teletext_to_clients.patch b/packages/addons/service/multimedia/hts-tvheadend/patches/hts-tvheadend-c88a646-deliver_raw_teletext_to_clients.patch new file mode 100644 index 0000000000..614e54df3a --- /dev/null +++ b/packages/addons/service/multimedia/hts-tvheadend/patches/hts-tvheadend-c88a646-deliver_raw_teletext_to_clients.patch @@ -0,0 +1,112 @@ +From 3b407aa2053b1db3316873acd05c64319676eb34 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jernej=20Fija=C4=8Dko?= +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 + diff --git a/packages/addons/service/multimedia/hts-tvheadend/patches/hts-tvheadend-c88a646-fix_memory_leak_queue_protection.patch b/packages/addons/service/multimedia/hts-tvheadend/patches/hts-tvheadend-c88a646-fix_memory_leak_queue_protection.patch new file mode 100644 index 0000000000..79632e6c4c --- /dev/null +++ b/packages/addons/service/multimedia/hts-tvheadend/patches/hts-tvheadend-c88a646-fix_memory_leak_queue_protection.patch @@ -0,0 +1,26 @@ +From 60e5a1014c52e926fb7dbb12392f60a473e44d2c Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jernej=20Fija=C4=8Dko?= +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 + diff --git a/packages/addons/service/multimedia/hts-tvheadend/source/bin/tv_grab_file b/packages/addons/service/multimedia/hts-tvheadend/source/bin/tv_grab_file new file mode 100755 index 0000000000..76b9e64eb6 --- /dev/null +++ b/packages/addons/service/multimedia/hts-tvheadend/source/bin/tv_grab_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 diff --git a/packages/addons/service/multimedia/hts-tvheadend/source/bin/tvheadend.service b/packages/addons/service/multimedia/hts-tvheadend/source/bin/tvheadend.service index d365232e51..c680b8d0dd 100755 --- a/packages/addons/service/multimedia/hts-tvheadend/source/bin/tvheadend.service +++ b/packages/addons/service/multimedia/hts-tvheadend/source/bin/tvheadend.service @@ -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 \ No newline at end of file + fi diff --git a/packages/addons/service/multimedia/hts-tvheadend/source/resources/language/English/strings.xml b/packages/addons/service/multimedia/hts-tvheadend/source/resources/language/English/strings.xml new file mode 100644 index 0000000000..6eeb22a953 --- /dev/null +++ b/packages/addons/service/multimedia/hts-tvheadend/source/resources/language/English/strings.xml @@ -0,0 +1,10 @@ + + + + + XMLTV + XMLTV configuration + XMLTV source type + XMLTV location + + diff --git a/packages/addons/service/multimedia/hts-tvheadend/source/resources/settings.xml b/packages/addons/service/multimedia/hts-tvheadend/source/resources/settings.xml new file mode 100644 index 0000000000..c8771ebbd6 --- /dev/null +++ b/packages/addons/service/multimedia/hts-tvheadend/source/resources/settings.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/packages/mediacenter/xbmc/patches/xbmc-10.1-Dharma-457-fix_connection_check-0.1.patch b/packages/mediacenter/xbmc/patches/xbmc-10.1-Dharma-457-fix_connection_check-0.1.patch new file mode 100644 index 0000000000..06304e56ae --- /dev/null +++ b/packages/mediacenter/xbmc/patches/xbmc-10.1-Dharma-457-fix_connection_check-0.1.patch @@ -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();