hts-tvheadend: update to hts-tvheadend-7630970

This commit is contained in:
Stefan Saraev 2012-08-23 20:26:06 +03:00
parent 9535082e26
commit 95875b3fa3
8 changed files with 8 additions and 462 deletions

View File

@ -28,4 +28,4 @@ mkdir -p $ADDON_BUILD/$PKG_ADDON_ID
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.bundle $ADDON_BUILD/$PKG_ADDON_ID/bin/tvheadend
cp -P $PKG_BUILD/build.linux/tvheadend $ADDON_BUILD/$PKG_ADDON_ID/bin/tvheadend

View File

@ -34,7 +34,7 @@ cd $PKG_BUILD
--arch=$TARGET_ARCH \
--cpu=$TARGET_CPU \
--cc=$TARGET_CC \
--enable-bundle \
--release
make
make build.linux/tvheadend.bundle

View File

@ -1,3 +1,7 @@
2.1.4
- update to hts-tvheadend-7630970
- add an option to wait for more than 1 adapters to appear
2.1.3
- update to hts-tvheadend-78213a0

View File

@ -19,8 +19,8 @@
################################################################################
PKG_NAME="hts-tvheadend"
PKG_VERSION="78213a0"
PKG_REV="3"
PKG_VERSION="7630970"
PKG_REV="4"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="http://www.lonelycoder.com/hts/tvheadend_overview.html"

View File

@ -1,55 +0,0 @@
diff -Naur hts-tvheadend-c88a646/src/linuxtv_muxes.h hts-tvheadend-c88a646.patch/src/linuxtv_muxes.h
--- hts-tvheadend-c88a646/src/linuxtv_muxes.h 2011-09-26 20:18:12.000000000 +0200
+++ hts-tvheadend-c88a646.patch/src/linuxtv_muxes.h 2011-10-18 13:40:37.768853992 +0200
@@ -12001,6 +12001,39 @@
{ .freq = 573000000, .symrate = 5217000, .fec = 0, .constellation = 5},
};
+static const struct mux muxes_DVBC_ch_GA_Weissenstein[] = {
+ { .freq = 450000000, .symrate = 6900000, .fec = 0, .constellation = 5},
+ { .freq = 506000000, .symrate = 6900000, .fec = 0, .constellation = 5},
+ { .freq = 514000000, .symrate = 6900000, .fec = 0, .constellation = 5},
+ { .freq = 522000000, .symrate = 6900000, .fec = 0, .constellation = 5},
+ { .freq = 530000000, .symrate = 6900000, .fec = 0, .constellation = 5},
+ { .freq = 538000000, .symrate = 6900000, .fec = 0, .constellation = 5},
+ { .freq = 554000000, .symrate = 6900000, .fec = 0, .constellation = 5},
+ { .freq = 562000000, .symrate = 6900000, .fec = 0, .constellation = 5},
+ { .freq = 570000000, .symrate = 6900000, .fec = 0, .constellation = 5},
+ { .freq = 578000000, .symrate = 6900000, .fec = 0, .constellation = 5},
+ { .freq = 586000000, .symrate = 6900000, .fec = 0, .constellation = 5},
+ { .freq = 594000000, .symrate = 6900000, .fec = 0, .constellation = 5},
+ { .freq = 602000000, .symrate = 6900000, .fec = 0, .constellation = 5},
+ { .freq = 610000000, .symrate = 6900000, .fec = 0, .constellation = 5},
+ { .freq = 618000000, .symrate = 6900000, .fec = 0, .constellation = 5},
+ { .freq = 626000000, .symrate = 6900000, .fec = 0, .constellation = 5},
+ { .freq = 634000000, .symrate = 6900000, .fec = 0, .constellation = 5},
+ { .freq = 642000000, .symrate = 6900000, .fec = 0, .constellation = 5},
+ { .freq = 650000000, .symrate = 6900000, .fec = 0, .constellation = 5},
+ { .freq = 658000000, .symrate = 6900000, .fec = 0, .constellation = 5},
+ { .freq = 666000000, .symrate = 6900000, .fec = 0, .constellation = 5},
+ { .freq = 674000000, .symrate = 6900000, .fec = 0, .constellation = 5},
+ { .freq = 682000000, .symrate = 6900000, .fec = 0, .constellation = 5},
+ { .freq = 690000000, .symrate = 6900000, .fec = 0, .constellation = 5},
+ { .freq = 698000000, .symrate = 6900000, .fec = 0, .constellation = 3},
+ { .freq = 698000000, .symrate = 6900000, .fec = 0, .constellation = 5},
+ { .freq = 706000000, .symrate = 6900000, .fec = 0, .constellation = 5},
+ { .freq = 714000000, .symrate = 6900000, .fec = 0, .constellation = 5},
+ { .freq = 722000000, .symrate = 6900000, .fec = 0, .constellation = 5},
+ { .freq = 730000000, .symrate = 6900000, .fec = 0, .constellation = 5},
+};
+
static const struct mux muxes_DVBC_ch_Rega_Sense[] = {
{ .freq = 434000000, .symrate = 6900000, .fec = 0, .constellation = 3},
{ .freq = 714000000, .symrate = 6900000, .fec = 0, .constellation = 3},
@@ -12881,6 +12914,11 @@
static const struct network networks_DVBC_ch[] = {
{
+ .name = "GA-Weissenstein",
+ .muxes = muxes_DVBC_ch_GA_Weissenstein,
+ .nmuxes = sizeof(muxes_DVBC_ch_GA_Weissenstein) / sizeof(struct mux),
+ },
+ {
.name = "Rega-Sense",
.muxes = muxes_DVBC_ch_Rega_Sense,
.nmuxes = sizeof(muxes_DVBC_ch_Rega_Sense) / sizeof(struct mux),

View File

@ -1,146 +0,0 @@
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 1/2] 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 @@ static int parse_pes_header(service_t *t, elementary_stream_t *st,
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 @@ static int parse_pes_header(service_t *t, elementary_stream_t *st,
}
}
+/**
+ * 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 @@
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.5.4
From a8026cd5b412c5096b0904f060ad5ffccdb883cf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jernej=20Fija=C4=8Dko?= <jernej@jernej-ThinkCentre-M91p.(none)>
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

View File

@ -1,257 +0,0 @@
From bb048589ab4e09e69b2fba3f639e8287ea9cc7c3 Mon Sep 17 00:00:00 2001
From: Tadej Novak <tadej@tano.si>
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 <tadej@tano.si>
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