diff --git a/packages/addons/service/multimedia/hts-tvheadend/addon b/packages/addons/service/multimedia/hts-tvheadend/addon index 5bab4c1275..85955bc65c 100755 --- a/packages/addons/service/multimedia/hts-tvheadend/addon +++ b/packages/addons/service/multimedia/hts-tvheadend/addon @@ -25,6 +25,7 @@ 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 + cp -PR $PKG_DIR/config/dvr-config $ADDON_BUILD/$PKG_ADDON_ID/dvr-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 69c97804ba..b6c84b8555 100644 --- a/packages/addons/service/multimedia/hts-tvheadend/changelog.txt +++ b/packages/addons/service/multimedia/hts-tvheadend/changelog.txt @@ -1,3 +1,8 @@ +2.0.8 +- define default recordings folder to /storage/recordings +- update to hts-tvheadend-a76f365 +- add patch for support IPTV radio streams + 2.0.7 - enable unloading/loading dvb modules on suspend/resume - add while loop for restarting tvheadend if it crashes diff --git a/packages/addons/service/multimedia/hts-tvheadend/config/dvr-config b/packages/addons/service/multimedia/hts-tvheadend/config/dvr-config new file mode 100644 index 0000000000..26b820aaa4 --- /dev/null +++ b/packages/addons/service/multimedia/hts-tvheadend/config/dvr-config @@ -0,0 +1,15 @@ +{ + "storage": "/storage/recordings", + "retention-days": 31, + "pre-extra-time": 0, + "post-extra-time": 0, + "day-dir": 0, + "channel-dir": 0, + "channel-in-title": 0, + "date-in-title": 0, + "time-in-title": 0, + "whitespace-in-title": 0, + "title-dir": 0, + "episode-in-title": 0, + "tag-files": 1 +} diff --git a/packages/addons/service/multimedia/hts-tvheadend/meta b/packages/addons/service/multimedia/hts-tvheadend/meta index 8910e3c7c6..f9aec73e4a 100644 --- a/packages/addons/service/multimedia/hts-tvheadend/meta +++ b/packages/addons/service/multimedia/hts-tvheadend/meta @@ -19,8 +19,8 @@ ################################################################################ PKG_NAME="hts-tvheadend" -PKG_VERSION="b877800" -PKG_REV="7" +PKG_VERSION="a76f365" +PKG_REV="8" PKG_ARCH="any" PKG_LICENSE="GPL" PKG_SITE="http://www.lonelycoder.com/hts/tvheadend_overview.html" diff --git a/packages/addons/service/multimedia/hts-tvheadend/patches/hts-tvheadend-b877800-090-add_CH-GA-Weissenstein_muxes-0.1.patch b/packages/addons/service/multimedia/hts-tvheadend/patches/hts-tvheadend-a76f365-090-add_CH-GA-Weissenstein_muxes-0.1.patch similarity index 100% rename from packages/addons/service/multimedia/hts-tvheadend/patches/hts-tvheadend-b877800-090-add_CH-GA-Weissenstein_muxes-0.1.patch rename to packages/addons/service/multimedia/hts-tvheadend/patches/hts-tvheadend-a76f365-090-add_CH-GA-Weissenstein_muxes-0.1.patch diff --git a/packages/addons/service/multimedia/hts-tvheadend/patches/hts-tvheadend-b877800-091-cwc-connection-attempt.patch b/packages/addons/service/multimedia/hts-tvheadend/patches/hts-tvheadend-a76f365-091-cwc-connection-attempt.patch similarity index 100% rename from packages/addons/service/multimedia/hts-tvheadend/patches/hts-tvheadend-b877800-091-cwc-connection-attempt.patch rename to packages/addons/service/multimedia/hts-tvheadend/patches/hts-tvheadend-a76f365-091-cwc-connection-attempt.patch diff --git a/packages/addons/service/multimedia/hts-tvheadend/patches/hts-tvheadend-b877800-deliver_raw_teletext_to_clients.patch b/packages/addons/service/multimedia/hts-tvheadend/patches/hts-tvheadend-a76f365-092-deliver_raw_teletext_to_clients.patch similarity index 67% rename from packages/addons/service/multimedia/hts-tvheadend/patches/hts-tvheadend-b877800-deliver_raw_teletext_to_clients.patch rename to packages/addons/service/multimedia/hts-tvheadend/patches/hts-tvheadend-a76f365-092-deliver_raw_teletext_to_clients.patch index 614e54df3a..17358b08b3 100644 --- a/packages/addons/service/multimedia/hts-tvheadend/patches/hts-tvheadend-b877800-deliver_raw_teletext_to_clients.patch +++ b/packages/addons/service/multimedia/hts-tvheadend/patches/hts-tvheadend-a76f365-092-deliver_raw_teletext_to_clients.patch @@ -1,7 +1,8 @@ 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) +Subject: [PATCH 1/2] Deliver raw teletext to clients that are able to display + it (e.g. XBMC) --- src/parsers.c | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ @@ -22,7 +23,7 @@ index 9b7337d..68c7996 100644 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, +@@ -158,6 +161,10 @@ static int parse_pes_header(service_t *t, elementary_stream_t *st, parse_aac(t, st, data, len, start); break; @@ -33,7 +34,7 @@ index 9b7337d..68c7996 100644 default: break; } -@@ -1232,6 +1239,54 @@ parse_subtitles(service_t *t, elementary_stream_t *st, const uint8_t *data, +@@ -1232,6 +1239,54 @@ static int parse_pes_header(service_t *t, elementary_stream_t *st, } } @@ -92,7 +93,7 @@ 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) +@@ -110,11 +110,10 @@ got_section, st); break; @@ -108,5 +109,38 @@ index 897fe1d..5fdaf8b 100644 break; -- -1.7.3.1 +1.7.5.4 + + +From a8026cd5b412c5096b0904f060ad5ffccdb883cf Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jernej=20Fija=C4=8Dko?= +Date: Thu, 17 Nov 2011 08:25:31 +0100 +Subject: [PATCH 2/2] Disable teletext recording to prevent issues with other + elementary streams. Temporary until a better solution + is found. + +--- + src/plumbing/globalheaders.c | 6 ++++++ + 1 files changed, 6 insertions(+), 0 deletions(-) + +diff --git a/src/plumbing/globalheaders.c b/src/plumbing/globalheaders.c +index 703591b..7f183d4 100644 +--- a/src/plumbing/globalheaders.c ++++ b/src/plumbing/globalheaders.c +@@ -202,6 +202,12 @@ + pkt->pkt_componentindex); + assert(ssc != NULL); + ++ if(ssc->ssc_type == SCT_TELETEXT) { ++ free(sm); ++ ssc->ssc_disabled = 1; ++ break; ++ } ++ + pkt = convertpkt(ssc, pkt); + + apply_header(ssc, pkt); +-- +1.7.5.4 + diff --git a/packages/addons/service/multimedia/hts-tvheadend/patches/hts-tvheadend-a76f365-093-add_support_for_IPTV_radio.patch b/packages/addons/service/multimedia/hts-tvheadend/patches/hts-tvheadend-a76f365-093-add_support_for_IPTV_radio.patch new file mode 100644 index 0000000000..67810ef2d8 --- /dev/null +++ b/packages/addons/service/multimedia/hts-tvheadend/patches/hts-tvheadend-a76f365-093-add_support_for_IPTV_radio.patch @@ -0,0 +1,257 @@ +From bb048589ab4e09e69b2fba3f639e8287ea9cc7c3 Mon Sep 17 00:00:00 2001 +From: Tadej Novak +Date: Thu, 26 Jan 2012 18:39:09 +0100 +Subject: [PATCH 1/2] IPTV Radio support + +Added service type for IPTV and IPTV radio for easier access in +some software (like XBMC). +--- + src/iptv_input.c | 6 ++++++ + src/service.c | 9 +++++++-- + src/service.h | 2 ++ + src/webui/extjs.c | 10 +++++++++- + src/webui/static/app/iptv.js | 11 +++++++++-- + 5 files changed, 33 insertions(+), 5 deletions(-) + +diff --git a/src/iptv_input.c b/src/iptv_input.c +index 0bfc311..361a151 100644 +--- a/src/iptv_input.c ++++ b/src/iptv_input.c +@@ -428,6 +428,7 @@ + inet_ntop(AF_INET6, &t->s_iptv_group6, abuf6, sizeof(abuf6)); + htsmsg_add_str(m, "group", abuf6); + } ++ htsmsg_add_u32(m, "radio", t->s_servicetype == ST_IPTV_RADIO); + if(t->s_ch != NULL) { + htsmsg_add_str(m, "channelname", t->s_ch->ch_name); + htsmsg_add_u32(m, "mapped", 1); +@@ -591,6 +592,11 @@ + if(!htsmsg_get_u32(c, "port", &u32)) + t->s_iptv_port = u32; + ++ if(!htsmsg_get_u32(c, "radio", &u32) && u32) ++ t->s_servicetype = ST_IPTV_RADIO; ++ else ++ t->s_servicetype = ST_IPTV; ++ + pthread_mutex_lock(&t->s_stream_mutex); + service_make_nicename(t); + psi_load_service_settings(c, t); +diff --git a/src/service.c b/src/service.c +index 1a405d1..6899e2e 100644 +--- a/src/service.c ++++ b/src/service.c +@@ -732,6 +732,8 @@ + { "HDTV", ST_HDTV }, + { "SDTV-AC", ST_AC_SDTV }, + { "HDTV-AC", ST_AC_HDTV }, ++ { "IPTV", ST_IPTV }, ++ { "IPTV Radio", ST_IPTV_RADIO }, + }; + + const char * +@@ -750,7 +752,8 @@ + t->s_servicetype == ST_SDTV || + t->s_servicetype == ST_HDTV || + t->s_servicetype == ST_AC_SDTV || +- t->s_servicetype == ST_AC_HDTV; ++ t->s_servicetype == ST_AC_HDTV || ++ t->s_servicetype == ST_IPTV; + } + + /** +@@ -759,7 +762,9 @@ + int + service_is_radio(service_t *t) + { +- return t->s_servicetype == ST_RADIO; ++ return ++ t->s_servicetype == ST_RADIO || ++ t->s_servicetype == ST_IPTV_RADIO; + } + + /** +diff --git a/src/service.h b/src/service.h +index 2185e42..186278d 100644 +--- a/src/service.h ++++ b/src/service.h +@@ -318,6 +318,8 @@ typedef void (pid_section_callback_t)(struct service *t, + ST_HDTV = 0x11, /* HDTV (MPEG2) */ + ST_AC_SDTV = 0x16, /* Advanced codec SDTV */ + ST_AC_HDTV = 0x19, /* Advanced codec HDTV */ ++ ST_IPTV = 0x30, /* IPTV */ ++ ST_IPTV_RADIO = 0x31, /* Radio over IPTV */ + } s_servicetype; + + +diff --git a/src/webui/extjs.c b/src/webui/extjs.c +index 3ed9f8b..4596005 100644 +--- a/src/webui/extjs.c ++++ b/src/webui/extjs.c +@@ -1313,7 +1313,14 @@ + } + save = 1; + } +- ++ if(!htsmsg_get_u32(c, "radio", &u32)) { ++ if(u32) ++ t->s_servicetype = ST_IPTV_RADIO; ++ else ++ t->s_servicetype = ST_IPTV; ++ save = 1; ++ } ++ + + save |= tvh_str_update(&t->s_iptv_iface, htsmsg_get_str(c, "interface")); + if(save) +@@ -1347,6 +1354,7 @@ + } + + htsmsg_add_u32(r, "port", t->s_iptv_port); ++ htsmsg_add_u32(r, "radio", t->s_servicetype == ST_IPTV_RADIO); + htsmsg_add_u32(r, "enabled", t->s_enabled); + return r; + } +diff --git a/src/webui/static/app/iptv.js b/src/webui/static/app/iptv.js +index acdbfc0..b29e0b9 100644 +--- a/src/webui/static/app/iptv.js ++++ b/src/webui/static/app/iptv.js +@@ -11,6 +11,12 @@ tvheadend.iptv = function(adapterId) { + width: 45 + }); + ++ var radioColumn = new Ext.grid.CheckColumn({ ++ header: "Radio", ++ dataIndex: 'radio', ++ width: 45 ++ }); ++ + var actions = new Ext.ux.grid.RowActions({ + header:'', + dataIndex: 'actions', +@@ -82,6 +88,7 @@ tvheadend.iptv = function(adapterId) { + maxValue: 65535 + }) + }, ++ radioColumn, + { + header: "Service ID", + dataIndex: 'sid', +@@ -105,7 +112,7 @@ tvheadend.iptv = function(adapterId) { + cm.defaultSortable = true; + + var rec = Ext.data.Record.create([ +- 'id', 'enabled', 'channelname', 'interface', 'group', 'port', ++ 'id', 'enabled', 'channelname', 'interface', 'group', 'port', 'radio', + 'sid', 'pmt', 'pcr' + ]); + +@@ -246,7 +253,7 @@ tvheadend.iptv = function(adapterId) { + stripeRows: true, + title: 'IPTV', + iconCls: 'iptv', +- plugins: [enabledColumn, actions], ++ plugins: [enabledColumn, radioColumn, actions], + store: store, + clicksToEdit: 2, + cm: cm, +-- +1.7.5.4 + + +From 18473dd11d983aecb6db6e49b454a5d6bb1a329f Mon Sep 17 00:00:00 2001 +From: Tadej Novak +Date: Mon, 30 Jan 2012 16:55:25 +0100 +Subject: [PATCH 2/2] Use the same service type for all radio types + +Tvheadend now uses same radio type ST_RADIO for DVB and IPTV radios. +Otherwise IPTV streams have ST_IPTV type. +--- + src/iptv_input.c | 4 ++-- + src/service.c | 5 +---- + src/service.h | 1 - + src/webui/extjs.c | 4 ++-- + 4 files changed, 5 insertions(+), 9 deletions(-) + +diff --git a/src/iptv_input.c b/src/iptv_input.c +index 361a151..aeb0ab2 100644 +--- a/src/iptv_input.c ++++ b/src/iptv_input.c +@@ -428,7 +428,7 @@ + inet_ntop(AF_INET6, &t->s_iptv_group6, abuf6, sizeof(abuf6)); + htsmsg_add_str(m, "group", abuf6); + } +- htsmsg_add_u32(m, "radio", t->s_servicetype == ST_IPTV_RADIO); ++ htsmsg_add_u32(m, "radio", t->s_servicetype == ST_RADIO); + if(t->s_ch != NULL) { + htsmsg_add_str(m, "channelname", t->s_ch->ch_name); + htsmsg_add_u32(m, "mapped", 1); +@@ -593,7 +593,7 @@ + t->s_iptv_port = u32; + + if(!htsmsg_get_u32(c, "radio", &u32) && u32) +- t->s_servicetype = ST_IPTV_RADIO; ++ t->s_servicetype = ST_RADIO; + else + t->s_servicetype = ST_IPTV; + +diff --git a/src/service.c b/src/service.c +index 6899e2e..015cd46 100644 +--- a/src/service.c ++++ b/src/service.c +@@ -733,7 +733,6 @@ + { "SDTV-AC", ST_AC_SDTV }, + { "HDTV-AC", ST_AC_HDTV }, + { "IPTV", ST_IPTV }, +- { "IPTV Radio", ST_IPTV_RADIO }, + }; + + const char * +@@ -762,9 +761,7 @@ + int + service_is_radio(service_t *t) + { +- return +- t->s_servicetype == ST_RADIO || +- t->s_servicetype == ST_IPTV_RADIO; ++ return t->s_servicetype == ST_RADIO; + } + + /** +diff --git a/src/service.h b/src/service.h +index 186278d..40d1174 100644 +--- a/src/service.h ++++ b/src/service.h +@@ -319,7 +319,6 @@ typedef void (pid_section_callback_t)(struct service *t, + ST_AC_SDTV = 0x16, /* Advanced codec SDTV */ + ST_AC_HDTV = 0x19, /* Advanced codec HDTV */ + ST_IPTV = 0x30, /* IPTV */ +- ST_IPTV_RADIO = 0x31, /* Radio over IPTV */ + } s_servicetype; + + +diff --git a/src/webui/extjs.c b/src/webui/extjs.c +index 4596005..4487deb 100644 +--- a/src/webui/extjs.c ++++ b/src/webui/extjs.c +@@ -1315,7 +1315,7 @@ + } + if(!htsmsg_get_u32(c, "radio", &u32)) { + if(u32) +- t->s_servicetype = ST_IPTV_RADIO; ++ t->s_servicetype = ST_RADIO; + else + t->s_servicetype = ST_IPTV; + save = 1; +@@ -1354,7 +1354,7 @@ + } + + htsmsg_add_u32(r, "port", t->s_iptv_port); +- htsmsg_add_u32(r, "radio", t->s_servicetype == ST_IPTV_RADIO); ++ htsmsg_add_u32(r, "radio", t->s_servicetype == ST_RADIO); + htsmsg_add_u32(r, "enabled", t->s_enabled); + return r; + } +-- +1.7.5.4 + diff --git a/packages/addons/service/multimedia/hts-tvheadend/patches/hts-tvheadend-b877800-fix_memory_leak_queue_protection.patch b/packages/addons/service/multimedia/hts-tvheadend/patches/hts-tvheadend-b877800-fix_memory_leak_queue_protection.patch deleted file mode 100644 index 79632e6c4c..0000000000 --- a/packages/addons/service/multimedia/hts-tvheadend/patches/hts-tvheadend-b877800-fix_memory_leak_queue_protection.patch +++ /dev/null @@ -1,26 +0,0 @@ -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/tvheadend.start b/packages/addons/service/multimedia/hts-tvheadend/source/bin/tvheadend.start index 738ed00780..ae69147e6c 100755 --- a/packages/addons/service/multimedia/hts-tvheadend/source/bin/tvheadend.start +++ b/packages/addons/service/multimedia/hts-tvheadend/source/bin/tvheadend.start @@ -33,6 +33,9 @@ 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" +DVR_SETTINGS_DIR="$ADDON_HOME/dvr" +DVR_SETTINGS_FILE="$DVR_SETTINGS_DIR/config" +DVR_DIR="$HOME/recordings" if [ ! -f "$ADDON_SETTINGS" ]; then cp $ADDON_DIR/settings-default.xml $ADDON_SETTINGS @@ -43,6 +46,12 @@ if [ ! -f "$XMLTV_SETTINGS_FILE" ]; then cp $ADDON_DIR/xmltv-config $XMLTV_SETTINGS_FILE fi +if [ ! -f "$DVR_SETTINGS_FILE" ]; then + mkdir -p $DVR_DIR + mkdir -p $DVR_SETTINGS_DIR + cp $ADDON_DIR/dvr-config $DVR_SETTINGS_FILE +fi + TVHEADEND_ARG="-C -s -u root -g video -c $ADDON_HOME" mkdir -p $ADDON_HOME diff --git a/packages/mediacenter/xbmc-pvr/patches/xbmc-pvr-c50f565-991-tvheadend_add_on_do_not_destroy_messages_in_the_parse.patch b/packages/mediacenter/xbmc-pvr/patches/xbmc-pvr-c50f565-991-tvheadend_add_on_do_not_destroy_messages_in_the_parse.patch new file mode 100644 index 0000000000..1c0e0b3aae --- /dev/null +++ b/packages/mediacenter/xbmc-pvr/patches/xbmc-pvr-c50f565-991-tvheadend_add_on_do_not_destroy_messages_in_the_parse.patch @@ -0,0 +1,26 @@ +From 87f59ed6f5a8874b484a3af614a94a62c928c1e4 Mon Sep 17 00:00:00 2001 +From: Lars Op den Kamp +Date: Tue, 13 Mar 2012 15:03:13 +0100 +Subject: [PATCH] tvheadend add-on: don't destroy messages in the Parse...() + methods. fixes crash when an invalid EPG result was + received from the server. closes #452 + +--- + xbmc/pvrclients/tvheadend/HTSPData.cpp | 1 - + 1 files changed, 0 insertions(+), 1 deletions(-) + +diff --git a/xbmc/pvrclients/tvheadend/HTSPData.cpp b/xbmc/pvrclients/tvheadend/HTSPData.cpp +index 9add621..19943ba 100644 +--- a/xbmc/pvrclients/tvheadend/HTSPData.cpp ++++ b/xbmc/pvrclients/tvheadend/HTSPData.cpp +@@ -999,7 +999,6 @@ bool CHTSPData::ParseEvent(htsmsg_t* msg, uint32_t id, SEvent &event) + { + XBMC->Log(LOG_DEBUG, "%s - malformed event", __FUNCTION__); + htsmsg_print(msg); +- htsmsg_destroy(msg); + return false; + } + event.Clear(); +-- +1.7.5.4 + diff --git a/packages/network/samba/config/smb.conf b/packages/network/samba/config/smb.conf index 12cb4468fc..0eff875849 100644 --- a/packages/network/samba/config/smb.conf +++ b/packages/network/samba/config/smb.conf @@ -80,6 +80,14 @@ writable = yes root preexec = mkdir -p /storage/tvshows +[Recordings] + path = /storage/recordings + available = yes + browsable = yes + public = yes + writable = yes + root preexec = mkdir -p /storage/recordings + [Downloads] path = /storage/downloads available = yes