mirror of
https://github.com/LibreELEC/LibreELEC.tv
synced 2025-09-24 19:46:01 +07:00
Compare commits
161 Commits
libreelec-
...
3.0.1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
34251ce19e | ||
|
|
7bec817c62 | ||
|
|
558aaffd5a | ||
|
|
86724c9b87 | ||
|
|
46a1abc03c | ||
|
|
6308070ac2 | ||
|
|
8c476b3056 | ||
|
|
30d5dda637 | ||
|
|
f85652573f | ||
|
|
1db6430a0c | ||
|
|
5bd4e7e1bb | ||
|
|
10e3f72ede | ||
|
|
6efdba41f7 | ||
|
|
449394cfd6 | ||
|
|
ff6f06149f | ||
|
|
919d71078b | ||
|
|
2a2a8cda2c | ||
|
|
f55a83afcb | ||
|
|
3ce4418833 | ||
|
|
cf2f80badf | ||
|
|
307cf64bfb | ||
|
|
0e5e0a9e04 | ||
|
|
83688801c7 | ||
|
|
fcaac62c5f | ||
|
|
b96a7982ac | ||
|
|
74881c1fd2 | ||
|
|
593b769300 | ||
|
|
477ade7b16 | ||
|
|
036bcad109 | ||
|
|
473b14446a | ||
|
|
ce45d89896 | ||
|
|
321b9dcd34 | ||
|
|
950033c06e | ||
|
|
a18834178b | ||
|
|
14c18a2de5 | ||
|
|
9553f6c11c | ||
|
|
22b62bed59 | ||
|
|
d1ff72f766 | ||
|
|
32502a5cf6 | ||
|
|
6fa2333414 | ||
|
|
152ceec969 | ||
|
|
6fbb705947 | ||
|
|
0e0a7de92f | ||
|
|
f02dead4a7 | ||
|
|
ed1cb4be13 | ||
|
|
29092e2ce5 | ||
|
|
114a9fb370 | ||
|
|
9d21adb6f3 | ||
|
|
a36921fbe6 | ||
|
|
c8f3e6708b | ||
|
|
6256e166aa | ||
|
|
a3c3fa5cce | ||
|
|
573e184cf5 | ||
|
|
fe325e7aed | ||
|
|
b088522f57 | ||
|
|
12f55ac1c6 | ||
|
|
b70a270365 | ||
|
|
a1a9217f8e | ||
|
|
91aa5ed603 | ||
|
|
f298846adb | ||
|
|
767ec892e2 | ||
|
|
07063e9a40 | ||
|
|
0121c1e36b | ||
|
|
7262ed18e4 | ||
|
|
3771c8eb3a | ||
|
|
bc003a1070 | ||
|
|
5c23e3fabc | ||
|
|
15505f80ca | ||
|
|
b7852952ba | ||
|
|
1a97097a30 | ||
|
|
58aaa9f266 | ||
|
|
ffc8962357 | ||
|
|
6069dd14c4 | ||
|
|
7b4edccf81 | ||
|
|
44bc649684 | ||
|
|
c5dbf3d94f | ||
|
|
fa51bfcf57 | ||
|
|
c546b5979a | ||
|
|
aa4fbd7ab1 | ||
|
|
82eb3158ae | ||
|
|
06461b6e7e | ||
|
|
6d16dc9399 | ||
|
|
efa8c1d95a | ||
|
|
a0c977ddfe | ||
|
|
945a7f338f | ||
|
|
0849a34c75 | ||
|
|
77f8e89bfe | ||
|
|
8db2e6705e | ||
|
|
4448113a7b | ||
|
|
bb5c5509f1 | ||
|
|
160ce21140 | ||
|
|
792e217186 | ||
|
|
4ed7faeba3 | ||
|
|
59c41e76a1 | ||
|
|
3f3e198c9b | ||
|
|
ccc1b39a15 | ||
|
|
ad1115e98e | ||
|
|
d9111f52a8 | ||
|
|
9c410eaeef | ||
|
|
e646610990 | ||
|
|
31001afd23 | ||
|
|
80c6730a0f | ||
|
|
004a391f18 | ||
|
|
6e9af9e243 | ||
|
|
f7c8509269 | ||
|
|
b768e322ed | ||
|
|
9029c645b0 | ||
|
|
b14d6da9cb | ||
|
|
96f52fc97f | ||
|
|
d4b844a7ed | ||
|
|
60744990c3 | ||
|
|
ef5d518eb9 | ||
|
|
e61360c9d3 | ||
|
|
2e24540df2 | ||
|
|
caeb39c657 | ||
|
|
a603e3bf18 | ||
|
|
9cb02d21a7 | ||
|
|
e5fa75cf69 | ||
|
|
28fe3c1b40 | ||
|
|
7e1f181168 | ||
|
|
708a34555a | ||
|
|
5e72c74419 | ||
|
|
b3011069c5 | ||
|
|
4f48a19924 | ||
|
|
86538ccb74 | ||
|
|
cd452f8288 | ||
|
|
7c1531f70d | ||
|
|
70064630d8 | ||
|
|
1405b245ea | ||
|
|
cf7af733c3 | ||
|
|
105ede1d39 | ||
|
|
917724673c | ||
|
|
768b7660e0 | ||
|
|
00221bea95 | ||
|
|
2af93e2b15 | ||
|
|
414abbc9e9 | ||
|
|
4d2ca4a68b | ||
|
|
2bf67bb4b0 | ||
|
|
7bccac2c21 | ||
|
|
991521fbbf | ||
|
|
20c48e1fe8 | ||
|
|
5a79bc7598 | ||
|
|
ba633c0e65 | ||
|
|
68391a604e | ||
|
|
b439e9450a | ||
|
|
e84de340b6 | ||
|
|
bc365bd295 | ||
|
|
21c2e30c78 | ||
|
|
2d59aa423e | ||
|
|
1e1dad760a | ||
|
|
80bcd9ba72 | ||
|
|
d0a3988215 | ||
|
|
4db0e6a9e4 | ||
|
|
3c1ef9bd37 | ||
|
|
7f01de9350 | ||
|
|
a9fd32bf62 | ||
|
|
26e29e2ef1 | ||
|
|
8e18629276 | ||
|
|
63cc19754c | ||
|
|
be0fd9c615 | ||
|
|
ee042d786f |
21
CHANGELOG
21
CHANGELOG
@@ -1,20 +1,5 @@
|
||||
OpenELEC (Version 2.1)
|
||||
OpenELEC (Version 3.0)
|
||||
|
||||
Changelog OpenELEC-2.0 to OpenELEC-2.1
|
||||
for a detailed Changelog from OpenELEC-2.0 to OpenELEC-3.0 see:
|
||||
https://github.com/OpenELEC/OpenELEC.tv/compare/2.0.0...3.0.0
|
||||
|
||||
Added packages:
|
||||
- add package 'ppp'
|
||||
- add package 'pptp'
|
||||
|
||||
Package updates:
|
||||
- update linux to linux-3.5
|
||||
- update dialog to dialog-1.1-20120215
|
||||
- update connman to connman-1.4
|
||||
|
||||
Added functions:
|
||||
- sshd can be enabled via OpenELEC Settings addon
|
||||
- add PPTP support
|
||||
|
||||
Changed functions:
|
||||
|
||||
Removed functions:
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# VERSION: set full version, use "devel" for development version
|
||||
OPENELEC_VERSION="devel"
|
||||
OPENELEC_VERSION="3.0.1"
|
||||
|
||||
# OS_VERSION: OS Version
|
||||
OS_VERSION="3.0"
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
3.0.7
|
||||
- update to TVHeadend 3.3.511
|
||||
|
||||
3.0.6
|
||||
- update to TVHeadend 3.3.491
|
||||
- disable avahi support
|
||||
|
||||
@@ -19,8 +19,8 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="tvheadend"
|
||||
PKG_VERSION="3.3.491"
|
||||
PKG_REV="6"
|
||||
PKG_VERSION="3.3.511"
|
||||
PKG_REV="7"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://www.lonelycoder.com/hts/tvheadend_overview.html"
|
||||
|
||||
@@ -1,48 +0,0 @@
|
||||
From 30517cb122d0991f0ba51155c9afff6bdc2d8899 Mon Sep 17 00:00:00 2001
|
||||
From: Stefan Saraev <stefan@saraev.ca>
|
||||
Date: Wed, 13 Mar 2013 21:30:55 +0200
|
||||
Subject: [PATCH] cwc: syslog: move some log messages to debug
|
||||
|
||||
---
|
||||
src/capmt.c | 4 ++--
|
||||
src/cwc.c | 2 +-
|
||||
2 files changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/src/capmt.c b/src/capmt.c
|
||||
index ac507bd..9e12e86 100644
|
||||
--- a/src/capmt.c
|
||||
+++ b/src/capmt.c
|
||||
@@ -547,7 +547,7 @@ handle_ca0(capmt_t* capmt) {
|
||||
#endif
|
||||
|
||||
if(ct->ct_keystate != CT_RESOLVED)
|
||||
- tvhlog(LOG_INFO, "capmt", "Obtained key for service \"%s\"",t->s_svcname);
|
||||
+ tvhlog(LOG_DEBUG, "capmt", "Obtained key for service \"%s\"",t->s_svcname);
|
||||
|
||||
ct->ct_keystate = CT_RESOLVED;
|
||||
}
|
||||
@@ -851,7 +851,7 @@ capmt_table_input(struct th_descrambler *td, struct service *t,
|
||||
cce->cce_ecmsize = len;
|
||||
|
||||
if(ct->ct_keystate != CT_RESOLVED)
|
||||
- tvhlog(LOG_INFO, "capmt",
|
||||
+ tvhlog(LOG_DEBUG, "capmt",
|
||||
"Trying to obtain key for service \"%s\"",t->s_svcname);
|
||||
|
||||
buf[9] = pmtversion;
|
||||
diff --git a/src/cwc.c b/src/cwc.c
|
||||
index ebafd4f..904213f 100644
|
||||
--- a/src/cwc.c
|
||||
+++ b/src/cwc.c
|
||||
@@ -873,7 +873,7 @@ forbid:
|
||||
}
|
||||
|
||||
if(ct->cs_keystate != CS_RESOLVED)
|
||||
- tvhlog(LOG_INFO, "cwc",
|
||||
+ tvhlog(LOG_DEBUG, "cwc",
|
||||
"Obtained key for service \"%s\" in %"PRId64" ms, from %s:%i",
|
||||
t->s_svcname, delay, ct->cs_cwc->cwc_hostname,
|
||||
ct->cs_cwc->cwc_port);
|
||||
--
|
||||
1.7.10.4
|
||||
|
||||
@@ -1,94 +0,0 @@
|
||||
From 07cdfdaf6af06ae08a779ccc9082a517757c6fd3 Mon Sep 17 00:00:00 2001
|
||||
From: Adam Sutton <dev@adamsutton.me.uk>
|
||||
Date: Tue, 12 Mar 2013 15:35:21 +0000
|
||||
Subject: [PATCH] Fix #1660 - dvb: stop constant updating of dvb mux
|
||||
configuration files
|
||||
|
||||
---
|
||||
src/dvb/dvb_multiplex.c | 23 ++++++++++++++---------
|
||||
1 file changed, 14 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/src/dvb/dvb_multiplex.c b/src/dvb/dvb_multiplex.c
|
||||
index ff61558..692ebf1 100644
|
||||
--- a/src/dvb/dvb_multiplex.c
|
||||
+++ b/src/dvb/dvb_multiplex.c
|
||||
@@ -58,9 +58,6 @@
|
||||
{ "OK", TDMI_FE_OK },
|
||||
};
|
||||
|
||||
-static void tdmi_set_enable(th_dvb_mux_instance_t *tdmi, int enabled);
|
||||
-
|
||||
-
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@@ -856,6 +853,9 @@ int dvb_mux_str2hier(const char *str)
|
||||
if (!networkname || !*networkname)
|
||||
return;
|
||||
|
||||
+ if (!strcmp(tdmi->tdmi_network ?: "", networkname))
|
||||
+ return;
|
||||
+
|
||||
free(tdmi->tdmi_network);
|
||||
tdmi->tdmi_network = strdup(networkname);
|
||||
dvb_mux_save(tdmi);
|
||||
@@ -879,8 +879,9 @@ int dvb_mux_str2hier(const char *str)
|
||||
if (tdmi->tdmi_transport_stream_id != 0xFFFF || tsid == 0xFFFF)
|
||||
return;
|
||||
|
||||
- tdmi->tdmi_transport_stream_id = tsid;
|
||||
-
|
||||
+ if (tdmi->tdmi_transport_stream_id == tsid)
|
||||
+ return;
|
||||
+
|
||||
dvb_mux_save(tdmi);
|
||||
|
||||
m = htsmsg_create_map();
|
||||
@@ -900,6 +901,9 @@ int dvb_mux_str2hier(const char *str)
|
||||
if (force)
|
||||
if (tdmi->tdmi_network_id != 0 || onid == 0)
|
||||
return;
|
||||
+
|
||||
+ if (tdmi->tdmi_network_id == onid)
|
||||
+ return;
|
||||
|
||||
tdmi->tdmi_network_id = onid;
|
||||
|
||||
@@ -915,13 +919,13 @@ int dvb_mux_str2hier(const char *str)
|
||||
/**
|
||||
*
|
||||
*/
|
||||
-static void
|
||||
+static int
|
||||
tdmi_set_enable(th_dvb_mux_instance_t *tdmi, int enabled)
|
||||
{
|
||||
th_dvb_adapter_t *tda = tdmi->tdmi_adapter;
|
||||
|
||||
if(tdmi->tdmi_enabled == enabled)
|
||||
- return;
|
||||
+ return 0;
|
||||
|
||||
if(tdmi->tdmi_enabled) {
|
||||
|
||||
@@ -940,6 +944,7 @@ int dvb_mux_str2hier(const char *str)
|
||||
mux_link_initial(tda, tdmi);
|
||||
|
||||
subscription_reschedule();
|
||||
+ return 1;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -948,8 +953,8 @@ int dvb_mux_str2hier(const char *str)
|
||||
void
|
||||
dvb_mux_set_enable(th_dvb_mux_instance_t *tdmi, int enabled)
|
||||
{
|
||||
- tdmi_set_enable(tdmi, enabled);
|
||||
- dvb_mux_save(tdmi);
|
||||
+ if (tdmi_set_enable(tdmi, enabled))
|
||||
+ dvb_mux_save(tdmi);
|
||||
}
|
||||
|
||||
|
||||
--
|
||||
1.7.10
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="alsa-lib"
|
||||
PKG_VERSION="1.0.26"
|
||||
PKG_VERSION="1.0.27"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -1,87 +0,0 @@
|
||||
From: Takashi Iwai <tiwai <at> suse.de>
|
||||
Subject: [PATCH RFC 1/2] control: Simplify using snd_config_get_bool()
|
||||
Newsgroups: gmane.linux.alsa.devel
|
||||
Date: 2012-10-12 15:25:23 GMT (17 weeks, 8 hours and 26 minutes ago)
|
||||
snd_config_get_bool() was improved to parse also ASCII strings now,
|
||||
so we don't have to open-code the boolean parser in
|
||||
src/control/setup.c any longer.
|
||||
|
||||
Signed-off-by: Takashi Iwai <tiwai <at> suse.de>
|
||||
---
|
||||
src/control/setup.c | 37 ++++++-------------------------------
|
||||
1 file changed, 6 insertions(+), 31 deletions(-)
|
||||
|
||||
diff --git a/src/control/setup.c b/src/control/setup.c
|
||||
index eecda45..bd3599d 100644
|
||||
--- a/src/control/setup.c
|
||||
+++ b/src/control/setup.c
|
||||
@@ -400,7 +400,6 @@ static int add_elem(snd_sctl_t *h, snd_config_t *_conf, snd_config_t *private_da
|
||||
{
|
||||
snd_config_t *conf;
|
||||
snd_config_iterator_t i, next;
|
||||
- char *tmp;
|
||||
int iface = SND_CTL_ELEM_IFACE_MIXER;
|
||||
const char *name = NULL;
|
||||
long index = 0;
|
||||
@@ -464,33 +463,17 @@ static int add_elem(snd_sctl_t *h, snd_config_t *_conf, snd_config_t *private_da
|
||||
continue;
|
||||
}
|
||||
if (strcmp(id, "lock") == 0) {
|
||||
- if ((err = snd_config_get_ascii(n, &tmp)) < 0) {
|
||||
- SNDERR("field %s has an invalid type", id);
|
||||
- goto _err;
|
||||
- }
|
||||
- err = snd_config_get_bool_ascii(tmp);
|
||||
- if (err < 0) {
|
||||
- SNDERR("field %s is not a boolean", id);
|
||||
- free(tmp);
|
||||
+ err = snd_config_get_bool(n);
|
||||
+ if (err < 0)
|
||||
goto _err;
|
||||
- }
|
||||
lock = err;
|
||||
- free(tmp);
|
||||
continue;
|
||||
}
|
||||
if (strcmp(id, "preserve") == 0) {
|
||||
- if ((err = snd_config_get_ascii(n, &tmp)) < 0) {
|
||||
- SNDERR("field %s has an invalid type", id);
|
||||
- goto _err;
|
||||
- }
|
||||
- err = snd_config_get_bool_ascii(tmp);
|
||||
- if (err < 0) {
|
||||
- SNDERR("field %s is not a boolean", id);
|
||||
- free(tmp);
|
||||
+ err = snd_config_get_bool(n);
|
||||
+ if (err < 0)
|
||||
goto _err;
|
||||
- }
|
||||
preserve = err;
|
||||
- free(tmp);
|
||||
continue;
|
||||
}
|
||||
if (strcmp(id, "value") == 0) {
|
||||
@@ -502,18 +485,10 @@ static int add_elem(snd_sctl_t *h, snd_config_t *_conf, snd_config_t *private_da
|
||||
continue;
|
||||
}
|
||||
if (strcmp(id, "optional") == 0) {
|
||||
- if ((err = snd_config_get_ascii(n, &tmp)) < 0) {
|
||||
- SNDERR("field %s has an invalid type", id);
|
||||
- goto _err;
|
||||
- }
|
||||
- err = snd_config_get_bool_ascii(tmp);
|
||||
- if (err < 0) {
|
||||
- SNDERR("field %s is not a boolean", id);
|
||||
- free(tmp);
|
||||
+ err = snd_config_get_bool(n);
|
||||
+ if (err < 0)
|
||||
goto _err;
|
||||
- }
|
||||
optional = err;
|
||||
- free(tmp);
|
||||
continue;
|
||||
}
|
||||
SNDERR("Unknown field %s", id);
|
||||
--
|
||||
1.7.12.2
|
||||
|
||||
@@ -1,123 +0,0 @@
|
||||
From 91e42790dd0a9489a94e3784d220d76ad2d98b36 Mon Sep 17 00:00:00 2001
|
||||
From: Takashi Iwai <tiwai@suse.de>
|
||||
Date: Sat, 16 Feb 2013 18:29:59 +0200
|
||||
Subject: [PATCH] Add workaround for conflicting IEC958 controls for HD-audio
|
||||
|
||||
When both an SPDIF and an HDMI output are present on HD-audio, both
|
||||
try to access IEC958 controls with index=0 although one of them must
|
||||
be wrong. For avoiding this conflict, the recent kernel code (3.9 and
|
||||
3.8 stable) moves the IEC958 controls of an SPDIF with index=16 once
|
||||
when the conflict happens.
|
||||
|
||||
In this patch, the corresponding support is added in alsa-lib side.
|
||||
The new "skip_rest" boolean flag is added to the hooked element
|
||||
definition which indicates that the rest of element array will be
|
||||
ignored once when this element is present and evaluated. With this
|
||||
new flag, the HD-audio config takes device=1 primarily, then take
|
||||
device=0 as fallback.
|
||||
|
||||
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
||||
---
|
||||
src/conf/cards/HDA-Intel.conf | 16 ++++++++++++++++
|
||||
src/control/setup.c | 19 ++++++++++++++++---
|
||||
2 files changed, 32 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/src/conf/cards/HDA-Intel.conf b/src/conf/cards/HDA-Intel.conf
|
||||
index d4f2667..3957c12 100644
|
||||
--- a/src/conf/cards/HDA-Intel.conf
|
||||
+++ b/src/conf/cards/HDA-Intel.conf
|
||||
@@ -113,6 +113,22 @@ HDA-Intel.pcm.iec958.0 {
|
||||
hook_args [
|
||||
{
|
||||
name "IEC958 Playback Default"
|
||||
+ index 16
|
||||
+ optional true
|
||||
+ lock true
|
||||
+ preserve true
|
||||
+ value [ $AES0 $AES1 $AES2 $AES3 ]
|
||||
+ }
|
||||
+ {
|
||||
+ name "IEC958 Playback Switch"
|
||||
+ index 16
|
||||
+ optional true
|
||||
+ value true
|
||||
+ # if this element is present, skip the rest
|
||||
+ skip_rest true
|
||||
+ }
|
||||
+ {
|
||||
+ name "IEC958 Playback Default"
|
||||
lock true
|
||||
preserve true
|
||||
value [ $AES0 $AES1 $AES2 $AES3 ]
|
||||
diff --git a/src/control/setup.c b/src/control/setup.c
|
||||
index eecda45..72facb0 100644
|
||||
--- a/src/control/setup.c
|
||||
+++ b/src/control/setup.c
|
||||
@@ -396,7 +396,7 @@ static int snd_config_get_ctl_elem_value(snd_config_t *conf,
|
||||
return 0;
|
||||
}
|
||||
|
||||
-static int add_elem(snd_sctl_t *h, snd_config_t *_conf, snd_config_t *private_data)
|
||||
+static int add_elem(snd_sctl_t *h, snd_config_t *_conf, snd_config_t *private_data, int *quit)
|
||||
{
|
||||
snd_config_t *conf;
|
||||
snd_config_iterator_t i, next;
|
||||
@@ -409,6 +409,7 @@ static int add_elem(snd_sctl_t *h, snd_config_t *_conf, snd_config_t *private_da
|
||||
int lock = 0;
|
||||
int preserve = 0;
|
||||
int optional = 0;
|
||||
+ int skip_rest = 0;
|
||||
snd_config_t *value = NULL, *mask = NULL;
|
||||
snd_sctl_elem_t *elem = NULL;
|
||||
int err;
|
||||
@@ -516,6 +517,13 @@ static int add_elem(snd_sctl_t *h, snd_config_t *_conf, snd_config_t *private_da
|
||||
free(tmp);
|
||||
continue;
|
||||
}
|
||||
+ if (strcmp(id, "skip_rest") == 0) {
|
||||
+ err = snd_config_get_bool(n);
|
||||
+ if (err < 0)
|
||||
+ goto _err;
|
||||
+ skip_rest = err;
|
||||
+ continue;
|
||||
+ }
|
||||
SNDERR("Unknown field %s", id);
|
||||
return -EINVAL;
|
||||
}
|
||||
@@ -564,6 +572,9 @@ static int add_elem(snd_sctl_t *h, snd_config_t *_conf, snd_config_t *private_da
|
||||
if (! optional)
|
||||
SNDERR("Cannot obtain info for CTL elem (%s,'%s',%li,%li,%li): %s", snd_ctl_elem_iface_name(iface), name, index, device, subdevice, snd_strerror(err));
|
||||
goto _err;
|
||||
+ } else {
|
||||
+ if (skip_rest)
|
||||
+ *quit = 1;
|
||||
}
|
||||
snd_ctl_elem_value_set_id(elem->val, elem->id);
|
||||
snd_ctl_elem_value_set_id(elem->old, elem->id);
|
||||
@@ -619,7 +630,7 @@ int snd_sctl_build(snd_sctl_t **sctl, snd_ctl_t *handle, snd_config_t *conf, snd
|
||||
{
|
||||
snd_sctl_t *h;
|
||||
snd_config_iterator_t i, next;
|
||||
- int err;
|
||||
+ int err, quit = 0;
|
||||
|
||||
assert(sctl);
|
||||
assert(handle);
|
||||
@@ -639,11 +650,13 @@ int snd_sctl_build(snd_sctl_t **sctl, snd_ctl_t *handle, snd_config_t *conf, snd
|
||||
INIT_LIST_HEAD(&h->elems);
|
||||
snd_config_for_each(i, next, conf) {
|
||||
snd_config_t *n = snd_config_iterator_entry(i);
|
||||
- err = add_elem(h, n, private_data);
|
||||
+ err = add_elem(h, n, private_data, &quit);
|
||||
if (err < 0) {
|
||||
free_elems(h);
|
||||
return err;
|
||||
}
|
||||
+ if (quit)
|
||||
+ break;
|
||||
}
|
||||
*sctl = h;
|
||||
return 0;
|
||||
--
|
||||
1.7.10
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="alsa-plugins"
|
||||
PKG_VERSION="1.0.26"
|
||||
PKG_VERSION="1.0.27"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="alsa-utils"
|
||||
PKG_VERSION="1.0.26"
|
||||
PKG_VERSION="1.0.27"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
diff -Naur alsa-utils-1.0.26-old/configure.in alsa-utils-1.0.26-new/configure.in
|
||||
--- alsa-utils-1.0.26-old/configure.in 2012-09-06 01:45:44.000000000 -0700
|
||||
+++ alsa-utils-1.0.26-new/configure.in 2012-12-29 08:01:59.000000000 -0800
|
||||
@@ -290,7 +290,7 @@
|
||||
TESTSOUND="$dir/test.wav")
|
||||
AC_SUBST(TESTSOUND)
|
||||
|
||||
-AM_CONFIG_HEADER(include/aconfig.h)
|
||||
+AC_CONFIG_HEADERS(include/aconfig.h)
|
||||
|
||||
dnl Checks for typedefs, structures, and compiler characteristics.
|
||||
AC_C_CONST
|
||||
@@ -30,6 +30,9 @@ cd $PKG_BUILD
|
||||
make PREFIX=/usr \
|
||||
CC="$TARGET_CC" \
|
||||
AR="$TARGET_AR" \
|
||||
HOST=_LINUX \
|
||||
HARDWARE_NAME=$TARGET_ARCH \
|
||||
BITS=$ACPICA_BITS \
|
||||
YACC=$ROOT/$TOOLCHAIN/bin/bison \
|
||||
CWARNINGFLAGS="-O2 $TARGET_CFLAGS"
|
||||
|
||||
|
||||
@@ -19,12 +19,13 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="acpica-unix2"
|
||||
PKG_VERSION="20130117"
|
||||
PKG_VERSION="20130328"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="i386 x86_64"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://www.acpica.org/"
|
||||
PKG_URL="https://www.acpica.org/download/$PKG_NAME-$PKG_VERSION.tar.gz"
|
||||
PKG_URL="https://acpica.org/sites/acpica/files/$PKG_NAME-$PKG_VERSION.tar.gz"
|
||||
PKG_DEPENDS=""
|
||||
PKG_BUILD_DEPENDS="toolchain flex bison"
|
||||
PKG_PRIORITY="optional"
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
diff -uNr acpica-unix2-20130117-orig/generate/unix/Makefile.common acpica-unix2-20130117/generate/unix/Makefile.common
|
||||
--- acpica-unix2-20130117-orig/generate/unix/Makefile.common 2013-01-17 20:47:44.000000000 +0100
|
||||
+++ acpica-unix2-20130117/generate/unix/Makefile.common 2013-02-07 15:13:59.000000000 +0100
|
||||
@@ -6,7 +6,7 @@
|
||||
# Get the OS machine architecture. Anything with a "64" in the returned
|
||||
# string will be treated as a 64-bit OS. Otherwise, the default is 32-bit.
|
||||
#
|
||||
-HARDWARE_NAME := $(shell uname -m)
|
||||
+HARDWARE_NAME=$(BITS)
|
||||
BITS=0
|
||||
|
||||
#
|
||||
@@ -23,8 +23,15 @@
|
||||
. config/options $1
|
||||
|
||||
cd $PKG_BUILD
|
||||
make PREFIX=/usr \
|
||||
CC="$TARGET_CC" \
|
||||
AR="$TARGET_AR" \
|
||||
make CC="$TARGET_CC" \
|
||||
CFLAGS="$TARGET_CFLAGS -Wall -Wstrict-prototypes -Wdeclaration-after-statement -Os -s -D_LINUX -DDEFINE_ALTERNATE_TYPES -I../include" \
|
||||
CPPFLAGS="$TARGET_CPPFLAGS" \
|
||||
-C acpidump acpidump
|
||||
|
||||
make CC="$TARGET_CC" \
|
||||
CFLAGS="$TARGET_CFLAGS -Wall -Wstrict-prototypes -Wdeclaration-after-statement -Os -s -D_LINUX -DDEFINE_ALTERNATE_TYPES -I../include" \
|
||||
-C acpixtract acpixtract
|
||||
|
||||
make CC="$TARGET_CC" \
|
||||
CFLAGS="$TARGET_CFLAGS -Wall -Wstrict-prototypes -Wdeclaration-after-statement -Os -s -D_LINUX -DDEFINE_ALTERNATE_TYPES -I../include" \
|
||||
-C madt madt
|
||||
|
||||
|
||||
@@ -19,12 +19,12 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="pmtools"
|
||||
PKG_VERSION="20071116"
|
||||
PKG_VERSION="20110323"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="i386 x86_64"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://lesswatts.org/projects/acpi/utilities.php"
|
||||
PKG_URL="https://lesswatts.org/patches/linux_acpi/$PKG_NAME-$PKG_VERSION.tar.gz"
|
||||
PKG_URL="http://mirror.linux.org.au/linux/kernel/people/lenb/acpi/utils/$PKG_NAME-$PKG_VERSION.tar.bz2"
|
||||
PKG_DEPENDS=""
|
||||
PKG_BUILD_DEPENDS="toolchain"
|
||||
PKG_PRIORITY="optional"
|
||||
|
||||
25
packages/debug/pmtools/patches/pmtools-madt.patch
Normal file
25
packages/debug/pmtools/patches/pmtools-madt.patch
Normal file
@@ -0,0 +1,25 @@
|
||||
diff -Naur pmtools/madt/Makefile pmtools.patch/madt/Makefile
|
||||
--- pmtools/madt/Makefile 2005-11-11 18:07:04.000000000 +0100
|
||||
+++ pmtools.patch/madt/Makefile 2007-11-16 19:48:56.000000000 +0100
|
||||
@@ -1,6 +1,16 @@
|
||||
+PROG= madt
|
||||
+SRCS= madt.c
|
||||
+
|
||||
+all: madt
|
||||
+$(PROG) : $(SRCS)
|
||||
+ $(CC) $(CFLAGS) $(SRCS) -o $(PROG)
|
||||
+
|
||||
test: madt
|
||||
- ./madt < APIC
|
||||
-madt: madt.c acpi.h tables.c
|
||||
- cc -o madt madt.c
|
||||
-clean:
|
||||
- rm madt
|
||||
+ ./madt < example.APIC.dat
|
||||
+ ./madt < example.APIC.bad.dat
|
||||
+
|
||||
+CLEANFILES= $(PROG)
|
||||
+
|
||||
+clean :
|
||||
+ rm -f $(CLEANFILES) $(patsubst %.c,%.o, $(SRCS)) *~
|
||||
+
|
||||
25
packages/debug/pmtools/unpack
Executable file
25
packages/debug/pmtools/unpack
Executable file
@@ -0,0 +1,25 @@
|
||||
#!/bin/sh
|
||||
|
||||
################################################################################
|
||||
# This file is part of OpenELEC - http://www.openelec.tv
|
||||
# Copyright (C) 2013 Dag Wieers (dag@wieers.com)
|
||||
#
|
||||
# This Program 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, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# This Program 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.tv; see the file COPYING. If not, write to
|
||||
# the Free Software Foundation, 51 Franklin Street, Suite 500, Boston, MA 02110, USA.
|
||||
# http://www.gnu.org/copyleft/gpl.html
|
||||
################################################################################
|
||||
|
||||
. config/options $1
|
||||
|
||||
mv $BUILD/$PKG_NAME $BUILD/$PKG_NAME-$PKG_VERSION
|
||||
@@ -19,12 +19,12 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="boost"
|
||||
PKG_VERSION="1_52_0"
|
||||
PKG_VERSION="1_53_0"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="OSS"
|
||||
PKG_SITE="http://www.boost.org/"
|
||||
PKG_URL="$SOURCEFORGE_SRC/boost/boost/1.52.0/${PKG_NAME}_${PKG_VERSION}.tar.bz2"
|
||||
PKG_URL="$SOURCEFORGE_SRC/boost/boost/1.53.0/${PKG_NAME}_${PKG_VERSION}.tar.bz2"
|
||||
PKG_DEPENDS="zlib bzip2"
|
||||
PKG_BUILD_DEPENDS="toolchain boost-jam Python-host zlib bzip2"
|
||||
PKG_PRIORITY="optional"
|
||||
|
||||
@@ -36,7 +36,6 @@ mkdir -p .objdir-target && cd .objdir-target
|
||||
--localstatedir=/var \
|
||||
--disable-static \
|
||||
--enable-shared \
|
||||
--disable-mpbsd \
|
||||
--disable-cxx \
|
||||
|
||||
make
|
||||
|
||||
@@ -19,12 +19,12 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="gmp"
|
||||
PKG_VERSION="5.0.5"
|
||||
PKG_VERSION="5.1.1"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="LGPL"
|
||||
PKG_SITE="http://gmplib.org/"
|
||||
PKG_URL="http://ftp.sunet.se/pub/gnu/gmp/$PKG_NAME-$PKG_VERSION.tar.bz2"
|
||||
PKG_URL="ftp://ftp.gmplib.org/pub/$PKG_NAME-$PKG_VERSION/$PKG_NAME-$PKG_VERSION.tar.xz"
|
||||
PKG_DEPENDS=""
|
||||
PKG_BUILD_DEPENDS="toolchain"
|
||||
PKG_PRIORITY="optional"
|
||||
|
||||
@@ -1,36 +0,0 @@
|
||||
diff -Naur gmp-5.0.5/configure.in gmp-5.0.5.patch/configure.in
|
||||
--- gmp-5.0.5/configure.in 2012-05-06 13:19:49.000000000 +0200
|
||||
+++ gmp-5.0.5.patch/configure.in 2013-01-12 02:25:31.897257189 +0100
|
||||
@@ -65,8 +65,8 @@
|
||||
dnl Note that there's a copy of these options in the top-level Makefile.am,
|
||||
dnl so update there too if changing anything.
|
||||
dnl
|
||||
-AM_INIT_AUTOMAKE([1.8 gnu no-dependencies $(top_builddir)/ansi2knr])
|
||||
-AM_CONFIG_HEADER(config.h:config.in)
|
||||
+AM_INIT_AUTOMAKE([1.8 gnu no-dependencies])
|
||||
+AC_CONFIG_HEADERS(config.h:config.in)
|
||||
AM_MAINTAINER_MODE
|
||||
|
||||
|
||||
@@ -2228,9 +2228,6 @@
|
||||
echo " MPN_PATH=\"$path\""
|
||||
|
||||
|
||||
-# Automake ansi2knr support.
|
||||
-AM_C_PROTOTYPES
|
||||
-
|
||||
CL_AS_NOEXECSTACK
|
||||
|
||||
GMP_PROG_AR
|
||||
diff -Naur gmp-5.0.5/Makefile.am gmp-5.0.5.patch/Makefile.am
|
||||
--- gmp-5.0.5/Makefile.am 2012-05-06 13:19:49.000000000 +0200
|
||||
+++ gmp-5.0.5.patch/Makefile.am 2013-01-12 02:25:09.603364249 +0100
|
||||
@@ -25,7 +25,7 @@
|
||||
# Makefiles in subdirectories, but here we must omit it so automake gives
|
||||
# the actual ansi2knr build rule, not "cd $(top_builddir) && make ansi2knr".
|
||||
#
|
||||
-AUTOMAKE_OPTIONS = 1.8 gnu no-dependencies ansi2knr
|
||||
+AUTOMAKE_OPTIONS = 1.8 gnu no-dependencies
|
||||
|
||||
|
||||
# Libtool -version-info for libgmp.la and libmp.la. See "Versioning" in the
|
||||
@@ -19,7 +19,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="bcm2835-driver"
|
||||
PKG_VERSION="2bcb2bc"
|
||||
PKG_VERSION="baa3ecf"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="nonfree"
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="dvb-firmware"
|
||||
PKG_VERSION="0.0.31"
|
||||
PKG_VERSION="0.0.33"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="Free-to-use"
|
||||
|
||||
@@ -1,74 +0,0 @@
|
||||
diff -Naur linux-3.6.11/drivers/media/rc/ene_ir.c linux-3.6.11.patch/drivers/media/rc/ene_ir.c
|
||||
--- linux-3.6.11/drivers/media/rc/ene_ir.c 2012-12-17 18:27:45.000000000 +0100
|
||||
+++ linux-3.6.11.patch/drivers/media/rc/ene_ir.c 2012-12-28 22:52:22.571974437 +0100
|
||||
@@ -1000,7 +1000,7 @@
|
||||
dev = kzalloc(sizeof(struct ene_device), GFP_KERNEL);
|
||||
rdev = rc_allocate_device();
|
||||
if (!dev || !rdev)
|
||||
- goto error1;
|
||||
+ goto failure;
|
||||
|
||||
/* validate resources */
|
||||
error = -ENODEV;
|
||||
@@ -1011,10 +1011,10 @@
|
||||
|
||||
if (!pnp_port_valid(pnp_dev, 0) ||
|
||||
pnp_port_len(pnp_dev, 0) < ENE_IO_SIZE)
|
||||
- goto error;
|
||||
+ goto failure;
|
||||
|
||||
if (!pnp_irq_valid(pnp_dev, 0))
|
||||
- goto error;
|
||||
+ goto failure;
|
||||
|
||||
spin_lock_init(&dev->hw_lock);
|
||||
|
||||
@@ -1030,7 +1030,7 @@
|
||||
/* detect hardware version and features */
|
||||
error = ene_hw_detect(dev);
|
||||
if (error)
|
||||
- goto error;
|
||||
+ goto failure;
|
||||
|
||||
if (!dev->hw_learning_and_tx_capable && txsim) {
|
||||
dev->hw_learning_and_tx_capable = true;
|
||||
@@ -1075,30 +1075,27 @@
|
||||
/* claim the resources */
|
||||
error = -EBUSY;
|
||||
if (!request_region(dev->hw_io, ENE_IO_SIZE, ENE_DRIVER_NAME)) {
|
||||
- dev->hw_io = -1;
|
||||
- dev->irq = -1;
|
||||
- goto error;
|
||||
+ goto failure;
|
||||
}
|
||||
|
||||
dev->irq = pnp_irq(pnp_dev, 0);
|
||||
if (request_irq(dev->irq, ene_isr,
|
||||
IRQF_SHARED, ENE_DRIVER_NAME, (void *)dev)) {
|
||||
- dev->irq = -1;
|
||||
- goto error;
|
||||
+ goto failure2;
|
||||
}
|
||||
|
||||
error = rc_register_device(rdev);
|
||||
if (error < 0)
|
||||
- goto error;
|
||||
+ goto failure3;
|
||||
|
||||
pr_notice("driver has been successfully loaded\n");
|
||||
return 0;
|
||||
-error:
|
||||
- if (dev && dev->irq >= 0)
|
||||
- free_irq(dev->irq, dev);
|
||||
- if (dev && dev->hw_io >= 0)
|
||||
- release_region(dev->hw_io, ENE_IO_SIZE);
|
||||
-error1:
|
||||
+
|
||||
+failure3:
|
||||
+ free_irq(dev->irq, dev);
|
||||
+failure2:
|
||||
+ release_region(dev->hw_io, ENE_IO_SIZE);
|
||||
+failure:
|
||||
rc_free_device(rdev);
|
||||
kfree(dev);
|
||||
return error;
|
||||
@@ -70,141 +70,7 @@ diff -Naur linux-3.6.11/drivers/media/rc/ati_remote.c linux-3.6.11.patch/drivers
|
||||
return err;
|
||||
}
|
||||
diff -Naur linux-3.6.11/drivers/media/rc/ene_ir.c linux-3.6.11.patch/drivers/media/rc/ene_ir.c
|
||||
--- linux-3.6.11/drivers/media/rc/ene_ir.c 2012-12-28 22:53:15.840572260 +0100
|
||||
+++ linux-3.6.11.patch/drivers/media/rc/ene_ir.c 2012-12-28 22:53:29.114472156 +0100
|
||||
@@ -1000,7 +1000,7 @@
|
||||
dev = kzalloc(sizeof(struct ene_device), GFP_KERNEL);
|
||||
rdev = rc_allocate_device();
|
||||
if (!dev || !rdev)
|
||||
- goto failure;
|
||||
+ goto exit_free_dev_rdev;
|
||||
|
||||
/* validate resources */
|
||||
error = -ENODEV;
|
||||
@@ -1011,10 +1011,10 @@
|
||||
|
||||
if (!pnp_port_valid(pnp_dev, 0) ||
|
||||
pnp_port_len(pnp_dev, 0) < ENE_IO_SIZE)
|
||||
- goto failure;
|
||||
+ goto exit_free_dev_rdev;
|
||||
|
||||
if (!pnp_irq_valid(pnp_dev, 0))
|
||||
- goto failure;
|
||||
+ goto exit_free_dev_rdev;
|
||||
|
||||
spin_lock_init(&dev->hw_lock);
|
||||
|
||||
@@ -1030,7 +1030,7 @@
|
||||
/* detect hardware version and features */
|
||||
error = ene_hw_detect(dev);
|
||||
if (error)
|
||||
- goto failure;
|
||||
+ goto exit_free_dev_rdev;
|
||||
|
||||
if (!dev->hw_learning_and_tx_capable && txsim) {
|
||||
dev->hw_learning_and_tx_capable = true;
|
||||
@@ -1075,27 +1075,27 @@
|
||||
/* claim the resources */
|
||||
error = -EBUSY;
|
||||
if (!request_region(dev->hw_io, ENE_IO_SIZE, ENE_DRIVER_NAME)) {
|
||||
- goto failure;
|
||||
+ goto exit_free_dev_rdev;
|
||||
}
|
||||
|
||||
dev->irq = pnp_irq(pnp_dev, 0);
|
||||
if (request_irq(dev->irq, ene_isr,
|
||||
IRQF_SHARED, ENE_DRIVER_NAME, (void *)dev)) {
|
||||
- goto failure2;
|
||||
+ goto exit_release_hw_io;
|
||||
}
|
||||
|
||||
error = rc_register_device(rdev);
|
||||
if (error < 0)
|
||||
- goto failure3;
|
||||
+ goto exit_free_irq;
|
||||
|
||||
pr_notice("driver has been successfully loaded\n");
|
||||
return 0;
|
||||
|
||||
-failure3:
|
||||
+exit_free_irq:
|
||||
free_irq(dev->irq, dev);
|
||||
-failure2:
|
||||
+exit_release_hw_io:
|
||||
release_region(dev->hw_io, ENE_IO_SIZE);
|
||||
-failure:
|
||||
+exit_free_dev_rdev:
|
||||
rc_free_device(rdev);
|
||||
kfree(dev);
|
||||
return error;
|
||||
diff -Naur linux-3.6.11/drivers/media/rc/fintek-cir.c linux-3.6.11.patch/drivers/media/rc/fintek-cir.c
|
||||
--- linux-3.6.11/drivers/media/rc/fintek-cir.c 2012-12-28 22:53:15.839572268 +0100
|
||||
+++ linux-3.6.11.patch/drivers/media/rc/fintek-cir.c 2012-12-28 22:53:29.115472147 +0100
|
||||
@@ -495,18 +495,18 @@
|
||||
/* input device for IR remote (and tx) */
|
||||
rdev = rc_allocate_device();
|
||||
if (!rdev)
|
||||
- goto failure;
|
||||
+ goto exit_free_dev_rdev;
|
||||
|
||||
ret = -ENODEV;
|
||||
/* validate pnp resources */
|
||||
if (!pnp_port_valid(pdev, 0)) {
|
||||
dev_err(&pdev->dev, "IR PNP Port not valid!\n");
|
||||
- goto failure;
|
||||
+ goto exit_free_dev_rdev;
|
||||
}
|
||||
|
||||
if (!pnp_irq_valid(pdev, 0)) {
|
||||
dev_err(&pdev->dev, "IR PNP IRQ not valid!\n");
|
||||
- goto failure;
|
||||
+ goto exit_free_dev_rdev;
|
||||
}
|
||||
|
||||
fintek->cir_addr = pnp_port_start(pdev, 0);
|
||||
@@ -523,7 +523,7 @@
|
||||
|
||||
ret = fintek_hw_detect(fintek);
|
||||
if (ret)
|
||||
- goto failure;
|
||||
+ goto exit_free_dev_rdev;
|
||||
|
||||
/* Initialize CIR & CIR Wake Logical Devices */
|
||||
fintek_config_mode_enable(fintek);
|
||||
@@ -556,15 +556,15 @@
|
||||
/* now claim resources */
|
||||
if (!request_region(fintek->cir_addr,
|
||||
fintek->cir_port_len, FINTEK_DRIVER_NAME))
|
||||
- goto failure;
|
||||
+ goto exit_free_dev_rdev;
|
||||
|
||||
if (request_irq(fintek->cir_irq, fintek_cir_isr, IRQF_SHARED,
|
||||
FINTEK_DRIVER_NAME, (void *)fintek))
|
||||
- goto failure2;
|
||||
+ goto exit_free_cir_addr;
|
||||
|
||||
ret = rc_register_device(rdev);
|
||||
if (ret)
|
||||
- goto failure3;
|
||||
+ goto exit_free_irq;
|
||||
|
||||
device_init_wakeup(&pdev->dev, true);
|
||||
fintek->rdev = rdev;
|
||||
@@ -574,11 +574,11 @@
|
||||
|
||||
return 0;
|
||||
|
||||
-failure3:
|
||||
+exit_free_irq:
|
||||
free_irq(fintek->cir_irq, fintek);
|
||||
-failure2:
|
||||
+exit_free_cir_addr:
|
||||
release_region(fintek->cir_addr, fintek->cir_port_len);
|
||||
-failure:
|
||||
+exit_free_dev_rdev:
|
||||
rc_free_device(rdev);
|
||||
kfree(fintek);
|
||||
|
||||
diff -Naur linux-3.6.11/drivers/media/rc/gpio-ir-recv.c linux-3.6.11.patch/drivers/media/rc/gpio-ir-recv.c
|
||||
--- linux-3.6.11/drivers/media/rc/gpio-ir-recv.c 2012-12-28 22:53:15.839572268 +0100
|
||||
+++ linux-3.6.11.patch/drivers/media/rc/gpio-ir-recv.c 2012-12-28 22:53:29.115472147 +0100
|
||||
@@ -263,154 +129,4 @@ diff -Naur linux-3.6.11/drivers/media/rc/gpio-ir-recv.c linux-3.6.11.patch/drive
|
||||
return rc;
|
||||
}
|
||||
diff -Naur linux-3.6.11/drivers/media/rc/ite-cir.c linux-3.6.11.patch/drivers/media/rc/ite-cir.c
|
||||
--- linux-3.6.11/drivers/media/rc/ite-cir.c 2012-12-28 22:53:15.840572260 +0100
|
||||
+++ linux-3.6.11.patch/drivers/media/rc/ite-cir.c 2012-12-28 22:58:06.139364653 +0100
|
||||
@@ -1472,7 +1472,7 @@
|
||||
/* input device for IR remote (and tx) */
|
||||
rdev = rc_allocate_device();
|
||||
if (!rdev)
|
||||
- goto failure;
|
||||
+ goto exit_free_dev_rdev;
|
||||
itdev->rdev = rdev;
|
||||
|
||||
ret = -ENODEV;
|
||||
@@ -1498,12 +1498,12 @@
|
||||
if (!pnp_port_valid(pdev, io_rsrc_no) ||
|
||||
pnp_port_len(pdev, io_rsrc_no) != dev_desc->io_region_size) {
|
||||
dev_err(&pdev->dev, "IR PNP Port not valid!\n");
|
||||
- goto failure;
|
||||
+ goto exit_free_dev_rdev;
|
||||
}
|
||||
|
||||
if (!pnp_irq_valid(pdev, 0)) {
|
||||
dev_err(&pdev->dev, "PNP IRQ not valid!\n");
|
||||
- goto failure;
|
||||
+ goto exit_free_dev_rdev;
|
||||
}
|
||||
|
||||
/* store resource values */
|
||||
@@ -1595,25 +1595,26 @@
|
||||
/* now claim resources */
|
||||
if (!request_region(itdev->cir_addr,
|
||||
dev_desc->io_region_size, ITE_DRIVER_NAME))
|
||||
- goto failure;
|
||||
+ goto exit_free_dev_rdev;
|
||||
+
|
||||
|
||||
if (request_irq(itdev->cir_irq, ite_cir_isr, IRQF_SHARED,
|
||||
ITE_DRIVER_NAME, (void *)itdev))
|
||||
- goto failure2;
|
||||
+ goto exit_release_cir_addr;
|
||||
|
||||
ret = rc_register_device(rdev);
|
||||
if (ret)
|
||||
- goto failure3;
|
||||
+ goto exit_free_irq;
|
||||
|
||||
ite_pr(KERN_NOTICE, "driver has been successfully loaded\n");
|
||||
|
||||
return 0;
|
||||
|
||||
-failure3:
|
||||
+exit_free_irq:
|
||||
free_irq(itdev->cir_irq, itdev);
|
||||
-failure2:
|
||||
+exit_release_cir_addr:
|
||||
release_region(itdev->cir_addr, itdev->params.io_region_size);
|
||||
-failure:
|
||||
+exit_free_dev_rdev:
|
||||
rc_free_device(rdev);
|
||||
kfree(itdev);
|
||||
|
||||
diff -Naur linux-3.6.11/drivers/media/rc/nuvoton-cir.c linux-3.6.11.patch/drivers/media/rc/nuvoton-cir.c
|
||||
--- linux-3.6.11/drivers/media/rc/nuvoton-cir.c 2012-12-28 22:53:15.839572268 +0100
|
||||
+++ linux-3.6.11.patch/drivers/media/rc/nuvoton-cir.c 2012-12-28 22:53:29.118472125 +0100
|
||||
@@ -986,25 +986,25 @@
|
||||
/* input device for IR remote (and tx) */
|
||||
rdev = rc_allocate_device();
|
||||
if (!rdev)
|
||||
- goto failure;
|
||||
+ goto exit_free_dev_rdev;
|
||||
|
||||
ret = -ENODEV;
|
||||
/* validate pnp resources */
|
||||
if (!pnp_port_valid(pdev, 0) ||
|
||||
pnp_port_len(pdev, 0) < CIR_IOREG_LENGTH) {
|
||||
dev_err(&pdev->dev, "IR PNP Port not valid!\n");
|
||||
- goto failure;
|
||||
+ goto exit_free_dev_rdev;
|
||||
}
|
||||
|
||||
if (!pnp_irq_valid(pdev, 0)) {
|
||||
dev_err(&pdev->dev, "PNP IRQ not valid!\n");
|
||||
- goto failure;
|
||||
+ goto exit_free_dev_rdev;
|
||||
}
|
||||
|
||||
if (!pnp_port_valid(pdev, 1) ||
|
||||
pnp_port_len(pdev, 1) < CIR_IOREG_LENGTH) {
|
||||
dev_err(&pdev->dev, "Wake PNP Port not valid!\n");
|
||||
- goto failure;
|
||||
+ goto exit_free_dev_rdev;
|
||||
}
|
||||
|
||||
nvt->cir_addr = pnp_port_start(pdev, 0);
|
||||
@@ -1027,7 +1027,7 @@
|
||||
|
||||
ret = nvt_hw_detect(nvt);
|
||||
if (ret)
|
||||
- goto failure;
|
||||
+ goto exit_free_dev_rdev;
|
||||
|
||||
/* Initialize CIR & CIR Wake Logical Devices */
|
||||
nvt_efm_enable(nvt);
|
||||
@@ -1070,23 +1070,23 @@
|
||||
/* now claim resources */
|
||||
if (!request_region(nvt->cir_addr,
|
||||
CIR_IOREG_LENGTH, NVT_DRIVER_NAME))
|
||||
- goto failure;
|
||||
+ goto exit_free_dev_rdev;
|
||||
|
||||
if (request_irq(nvt->cir_irq, nvt_cir_isr, IRQF_SHARED,
|
||||
NVT_DRIVER_NAME, (void *)nvt))
|
||||
- goto failure2;
|
||||
+ goto exit_release_cir_addr;
|
||||
|
||||
if (!request_region(nvt->cir_wake_addr,
|
||||
CIR_IOREG_LENGTH, NVT_DRIVER_NAME))
|
||||
- goto failure3;
|
||||
+ goto exit_free_irq;
|
||||
|
||||
if (request_irq(nvt->cir_wake_irq, nvt_cir_wake_isr, IRQF_SHARED,
|
||||
NVT_DRIVER_NAME, (void *)nvt))
|
||||
- goto failure4;
|
||||
+ goto exit_release_cir_wake_addr;
|
||||
|
||||
ret = rc_register_device(rdev);
|
||||
if (ret)
|
||||
- goto failure5;
|
||||
+ goto exit_free_wake_irq;
|
||||
|
||||
device_init_wakeup(&pdev->dev, true);
|
||||
nvt->rdev = rdev;
|
||||
@@ -1098,15 +1098,15 @@
|
||||
|
||||
return 0;
|
||||
|
||||
-failure5:
|
||||
+exit_free_wake_irq:
|
||||
free_irq(nvt->cir_wake_irq, nvt);
|
||||
-failure4:
|
||||
+exit_release_cir_wake_addr:
|
||||
release_region(nvt->cir_wake_addr, CIR_IOREG_LENGTH);
|
||||
-failure3:
|
||||
+exit_free_irq:
|
||||
free_irq(nvt->cir_irq, nvt);
|
||||
-failure2:
|
||||
+exit_release_cir_addr:
|
||||
release_region(nvt->cir_addr, CIR_IOREG_LENGTH);
|
||||
-failure:
|
||||
+exit_free_dev_rdev:
|
||||
rc_free_device(rdev);
|
||||
kfree(nvt);
|
||||
|
||||
|
||||
@@ -1,53 +0,0 @@
|
||||
diff -Naur linux-3.6.11/drivers/media/rc/fintek-cir.c linux-3.6.11.patch/drivers/media/rc/fintek-cir.c
|
||||
--- linux-3.6.11/drivers/media/rc/fintek-cir.c 2012-12-28 22:59:21.808868854 +0100
|
||||
+++ linux-3.6.11.patch/drivers/media/rc/fintek-cir.c 2012-12-28 22:59:37.532767678 +0100
|
||||
@@ -552,6 +552,8 @@
|
||||
/* rx resolution is hardwired to 50us atm, 1, 25, 100 also possible */
|
||||
rdev->rx_resolution = US_TO_NS(CIR_SAMPLE_PERIOD);
|
||||
|
||||
+ fintek->rdev = rdev;
|
||||
+
|
||||
ret = -EBUSY;
|
||||
/* now claim resources */
|
||||
if (!request_region(fintek->cir_addr,
|
||||
@@ -567,7 +569,7 @@
|
||||
goto exit_free_irq;
|
||||
|
||||
device_init_wakeup(&pdev->dev, true);
|
||||
- fintek->rdev = rdev;
|
||||
+
|
||||
fit_pr(KERN_NOTICE, "driver has been successfully loaded\n");
|
||||
if (debug)
|
||||
cir_dump_regs(fintek);
|
||||
diff -Naur linux-3.6.11/drivers/media/rc/ite-cir.c linux-3.6.11.patch/drivers/media/rc/ite-cir.c
|
||||
--- linux-3.6.11/drivers/media/rc/ite-cir.c 2012-12-28 22:59:21.808868854 +0100
|
||||
+++ linux-3.6.11.patch/drivers/media/rc/ite-cir.c 2012-12-28 22:59:37.533767672 +0100
|
||||
@@ -1591,6 +1591,8 @@
|
||||
rdev->driver_name = ITE_DRIVER_NAME;
|
||||
rdev->map_name = RC_MAP_RC6_MCE;
|
||||
|
||||
+ itdev->rdev = rdev;
|
||||
+
|
||||
ret = -EBUSY;
|
||||
/* now claim resources */
|
||||
if (!request_region(itdev->cir_addr,
|
||||
diff -Naur linux-3.6.11/drivers/media/rc/nuvoton-cir.c linux-3.6.11.patch/drivers/media/rc/nuvoton-cir.c
|
||||
--- linux-3.6.11/drivers/media/rc/nuvoton-cir.c 2012-12-28 22:59:21.807868860 +0100
|
||||
+++ linux-3.6.11.patch/drivers/media/rc/nuvoton-cir.c 2012-12-28 22:59:37.533767672 +0100
|
||||
@@ -1065,6 +1065,7 @@
|
||||
/* tx bits */
|
||||
rdev->tx_resolution = XYZ;
|
||||
#endif
|
||||
+ nvt->rdev = rdev;
|
||||
|
||||
ret = -EBUSY;
|
||||
/* now claim resources */
|
||||
@@ -1089,7 +1090,7 @@
|
||||
goto exit_free_wake_irq;
|
||||
|
||||
device_init_wakeup(&pdev->dev, true);
|
||||
- nvt->rdev = rdev;
|
||||
+
|
||||
nvt_pr(KERN_NOTICE, "driver has been successfully loaded\n");
|
||||
if (debug) {
|
||||
cir_dump_regs(nvt);
|
||||
@@ -1,174 +0,0 @@
|
||||
diff -Naur linux-3.6.11/drivers/media/rc/ene_ir.c linux-3.6.11.patch/drivers/media/rc/ene_ir.c
|
||||
--- linux-3.6.11/drivers/media/rc/ene_ir.c 2012-12-28 23:03:21.859277264 +0100
|
||||
+++ linux-3.6.11.patch/drivers/media/rc/ene_ir.c 2012-12-28 23:03:33.651196525 +0100
|
||||
@@ -1072,10 +1072,14 @@
|
||||
device_set_wakeup_capable(&pnp_dev->dev, true);
|
||||
device_set_wakeup_enable(&pnp_dev->dev, true);
|
||||
|
||||
+ error = rc_register_device(rdev);
|
||||
+ if (error < 0)
|
||||
+ goto exit_free_dev_rdev;
|
||||
+
|
||||
/* claim the resources */
|
||||
error = -EBUSY;
|
||||
if (!request_region(dev->hw_io, ENE_IO_SIZE, ENE_DRIVER_NAME)) {
|
||||
- goto exit_free_dev_rdev;
|
||||
+ goto exit_unregister_device;
|
||||
}
|
||||
|
||||
dev->irq = pnp_irq(pnp_dev, 0);
|
||||
@@ -1084,17 +1088,13 @@
|
||||
goto exit_release_hw_io;
|
||||
}
|
||||
|
||||
- error = rc_register_device(rdev);
|
||||
- if (error < 0)
|
||||
- goto exit_free_irq;
|
||||
-
|
||||
pr_notice("driver has been successfully loaded\n");
|
||||
return 0;
|
||||
|
||||
-exit_free_irq:
|
||||
- free_irq(dev->irq, dev);
|
||||
exit_release_hw_io:
|
||||
release_region(dev->hw_io, ENE_IO_SIZE);
|
||||
+exit_unregister_device:
|
||||
+ rc_unregister_device(rdev);
|
||||
exit_free_dev_rdev:
|
||||
rc_free_device(rdev);
|
||||
kfree(dev);
|
||||
diff -Naur linux-3.6.11/drivers/media/rc/ite-cir.c linux-3.6.11.patch/drivers/media/rc/ite-cir.c
|
||||
--- linux-3.6.11/drivers/media/rc/ite-cir.c 2012-12-28 23:03:21.858277269 +0100
|
||||
+++ linux-3.6.11.patch/drivers/media/rc/ite-cir.c 2012-12-28 23:06:45.772856073 +0100
|
||||
@@ -1593,29 +1593,29 @@
|
||||
|
||||
itdev->rdev = rdev;
|
||||
|
||||
+ ret = rc_register_device(rdev);
|
||||
+ if (ret)
|
||||
+ goto exit_free_dev_rdev;
|
||||
+
|
||||
ret = -EBUSY;
|
||||
/* now claim resources */
|
||||
if (!request_region(itdev->cir_addr,
|
||||
dev_desc->io_region_size, ITE_DRIVER_NAME))
|
||||
- goto exit_free_dev_rdev;
|
||||
+ goto exit_unregister_device;
|
||||
|
||||
|
||||
if (request_irq(itdev->cir_irq, ite_cir_isr, IRQF_SHARED,
|
||||
ITE_DRIVER_NAME, (void *)itdev))
|
||||
goto exit_release_cir_addr;
|
||||
|
||||
- ret = rc_register_device(rdev);
|
||||
- if (ret)
|
||||
- goto exit_free_irq;
|
||||
-
|
||||
ite_pr(KERN_NOTICE, "driver has been successfully loaded\n");
|
||||
|
||||
return 0;
|
||||
|
||||
-exit_free_irq:
|
||||
- free_irq(itdev->cir_irq, itdev);
|
||||
exit_release_cir_addr:
|
||||
release_region(itdev->cir_addr, itdev->params.io_region_size);
|
||||
+exit_unregister_device:
|
||||
+ rc_unregister_device(rdev);
|
||||
exit_free_dev_rdev:
|
||||
rc_free_device(rdev);
|
||||
kfree(itdev);
|
||||
diff -Naur linux-3.6.11/drivers/media/rc/nuvoton-cir.c linux-3.6.11.patch/drivers/media/rc/nuvoton-cir.c
|
||||
--- linux-3.6.11/drivers/media/rc/nuvoton-cir.c 2012-12-28 23:03:21.858277269 +0100
|
||||
+++ linux-3.6.11.patch/drivers/media/rc/nuvoton-cir.c 2012-12-28 23:03:33.653196511 +0100
|
||||
@@ -1067,11 +1067,15 @@
|
||||
#endif
|
||||
nvt->rdev = rdev;
|
||||
|
||||
+ ret = rc_register_device(rdev);
|
||||
+ if (ret)
|
||||
+ goto exit_free_dev_rdev;
|
||||
+
|
||||
ret = -EBUSY;
|
||||
/* now claim resources */
|
||||
if (!request_region(nvt->cir_addr,
|
||||
CIR_IOREG_LENGTH, NVT_DRIVER_NAME))
|
||||
- goto exit_free_dev_rdev;
|
||||
+ goto exit_unregister_device;
|
||||
|
||||
if (request_irq(nvt->cir_irq, nvt_cir_isr, IRQF_SHARED,
|
||||
NVT_DRIVER_NAME, (void *)nvt))
|
||||
@@ -1085,10 +1089,6 @@
|
||||
NVT_DRIVER_NAME, (void *)nvt))
|
||||
goto exit_release_cir_wake_addr;
|
||||
|
||||
- ret = rc_register_device(rdev);
|
||||
- if (ret)
|
||||
- goto exit_free_wake_irq;
|
||||
-
|
||||
device_init_wakeup(&pdev->dev, true);
|
||||
|
||||
nvt_pr(KERN_NOTICE, "driver has been successfully loaded\n");
|
||||
@@ -1099,14 +1099,14 @@
|
||||
|
||||
return 0;
|
||||
|
||||
-exit_free_wake_irq:
|
||||
- free_irq(nvt->cir_wake_irq, nvt);
|
||||
exit_release_cir_wake_addr:
|
||||
release_region(nvt->cir_wake_addr, CIR_IOREG_LENGTH);
|
||||
exit_free_irq:
|
||||
free_irq(nvt->cir_irq, nvt);
|
||||
exit_release_cir_addr:
|
||||
release_region(nvt->cir_addr, CIR_IOREG_LENGTH);
|
||||
+exit_unregister_device:
|
||||
+ rc_unregister_device(rdev);
|
||||
exit_free_dev_rdev:
|
||||
rc_free_device(rdev);
|
||||
kfree(nvt);
|
||||
diff -Naur linux-3.6.11/drivers/media/rc/winbond-cir.c linux-3.6.11.patch/drivers/media/rc/winbond-cir.c
|
||||
--- linux-3.6.11/drivers/media/rc/winbond-cir.c 2012-12-28 23:03:21.858277269 +0100
|
||||
+++ linux-3.6.11.patch/drivers/media/rc/winbond-cir.c 2012-12-28 23:03:33.653196511 +0100
|
||||
@@ -1035,11 +1035,15 @@
|
||||
data->dev->timeout = MS_TO_NS(100);
|
||||
data->dev->allowed_protos = RC_TYPE_ALL;
|
||||
|
||||
+ err = rc_register_device(data->dev);
|
||||
+ if (err)
|
||||
+ goto exit_free_rc;
|
||||
+
|
||||
if (!request_region(data->wbase, WAKEUP_IOMEM_LEN, DRVNAME)) {
|
||||
dev_err(dev, "Region 0x%lx-0x%lx already in use!\n",
|
||||
data->wbase, data->wbase + WAKEUP_IOMEM_LEN - 1);
|
||||
err = -EBUSY;
|
||||
- goto exit_free_rc;
|
||||
+ goto exit_unregister_device;
|
||||
}
|
||||
|
||||
if (!request_region(data->ebase, EHFUNC_IOMEM_LEN, DRVNAME)) {
|
||||
@@ -1064,24 +1068,20 @@
|
||||
goto exit_release_sbase;
|
||||
}
|
||||
|
||||
- err = rc_register_device(data->dev);
|
||||
- if (err)
|
||||
- goto exit_free_irq;
|
||||
-
|
||||
device_init_wakeup(&device->dev, 1);
|
||||
|
||||
wbcir_init_hw(data);
|
||||
|
||||
return 0;
|
||||
|
||||
-exit_free_irq:
|
||||
- free_irq(data->irq, device);
|
||||
exit_release_sbase:
|
||||
release_region(data->sbase, SP_IOMEM_LEN);
|
||||
exit_release_ebase:
|
||||
release_region(data->ebase, EHFUNC_IOMEM_LEN);
|
||||
exit_release_wbase:
|
||||
release_region(data->wbase, WAKEUP_IOMEM_LEN);
|
||||
+exit_unregister_device:
|
||||
+ rc_unregister_device(data->dev);
|
||||
exit_free_rc:
|
||||
rc_free_device(data->dev);
|
||||
exit_unregister_led:
|
||||
12142
packages/linux/patches/3.6.11/linux-221-ngene-octopus.patch
vendored
12142
packages/linux/patches/3.6.11/linux-221-ngene-octopus.patch
vendored
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,45 +0,0 @@
|
||||
The array channel_allocations[] is an ordered list, add function to get
|
||||
correct order by ca_index.
|
||||
|
||||
Signed-off-by: Wang Xingchao <xingchao.wang at intel.com>
|
||||
---
|
||||
sound/pci/hda/patch_hdmi.c | 15 ++++++++++++++-
|
||||
1 file changed, 14 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c
|
||||
index d9439c5..6ac21d4 100644
|
||||
--- a/sound/pci/hda/patch_hdmi.c
|
||||
+++ b/sound/pci/hda/patch_hdmi.c
|
||||
@@ -469,6 +469,17 @@ static void init_channel_allocations(void)
|
||||
}
|
||||
}
|
||||
|
||||
+static int get_channel_allocation_order(int ca)
|
||||
+{
|
||||
+ int i;
|
||||
+
|
||||
+ for (i = 0; i < ARRAY_SIZE(channel_allocations); i++) {
|
||||
+ if (channel_allocations[i].ca_index == ca)
|
||||
+ break;
|
||||
+ }
|
||||
+ return i;
|
||||
+}
|
||||
+
|
||||
/*
|
||||
* The transformation takes two steps:
|
||||
*
|
||||
@@ -541,9 +552,11 @@ static void hdmi_setup_channel_mapping(struct hda_codec *codec,
|
||||
{
|
||||
int i;
|
||||
int err;
|
||||
+ int order;
|
||||
|
||||
+ order = get_channel_allocation_order(ca);
|
||||
if (hdmi_channel_mapping[ca][1] == 0) {
|
||||
- for (i = 0; i < channel_allocations[ca].channels; i++)
|
||||
+ for (i = 0; i < channel_allocations[order].channels; i++)
|
||||
hdmi_channel_mapping[ca][i] = i | (i << 4);
|
||||
for (; i < 8; i++)
|
||||
hdmi_channel_mapping[ca][i] = 0xf | (i << 4);
|
||||
--
|
||||
1.7.9.5
|
||||
@@ -1,130 +0,0 @@
|
||||
HDMI channel remapping apparently effects HBR packets on Intel's chips.
|
||||
For compressed non-PCM audio, use "straight-through" channel mapping.
|
||||
For uncompressed multi-channel pcm audio, use normal channel mapping.
|
||||
|
||||
Signed-off-by: Wang Xingchao <xingchao.wang at intel.com>
|
||||
---
|
||||
sound/pci/hda/patch_hdmi.c | 36 ++++++++++++++++++++++++++++++++----
|
||||
1 file changed, 32 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c
|
||||
index 6ac21d4..a87f8b2 100644
|
||||
--- a/sound/pci/hda/patch_hdmi.c
|
||||
+++ b/sound/pci/hda/patch_hdmi.c
|
||||
@@ -34,6 +34,7 @@
|
||||
#include <linux/module.h>
|
||||
#include <sound/core.h>
|
||||
#include <sound/jack.h>
|
||||
+#include <sound/asoundef.h>
|
||||
#include "hda_codec.h"
|
||||
#include "hda_local.h"
|
||||
#include "hda_jack.h"
|
||||
@@ -60,6 +61,7 @@ struct hdmi_spec_per_cvt {
|
||||
u32 rates;
|
||||
u64 formats;
|
||||
unsigned int maxbps;
|
||||
+ bool non_pcm;
|
||||
};
|
||||
|
||||
struct hdmi_spec_per_pin {
|
||||
@@ -548,13 +550,17 @@ static void hdmi_debug_channel_mapping(struct hda_codec *codec,
|
||||
|
||||
static void hdmi_setup_channel_mapping(struct hda_codec *codec,
|
||||
hda_nid_t pin_nid,
|
||||
+ hda_nid_t cvt_nid,
|
||||
+ bool non_pcm,
|
||||
int ca)
|
||||
{
|
||||
int i;
|
||||
int err;
|
||||
int order;
|
||||
+ int non_pcm_mapping[8];
|
||||
|
||||
order = get_channel_allocation_order(ca);
|
||||
+
|
||||
if (hdmi_channel_mapping[ca][1] == 0) {
|
||||
for (i = 0; i < channel_allocations[order].channels; i++)
|
||||
hdmi_channel_mapping[ca][i] = i | (i << 4);
|
||||
@@ -562,10 +568,17 @@ static void hdmi_setup_channel_mapping(struct hda_codec *codec,
|
||||
hdmi_channel_mapping[ca][i] = 0xf | (i << 4);
|
||||
}
|
||||
|
||||
+ if (non_pcm) {
|
||||
+ for (i = 0; i < channel_allocations[order].channels; i++)
|
||||
+ non_pcm_mapping[i] = i | (i << 4);
|
||||
+ for (; i < 8; i++)
|
||||
+ non_pcm_mapping[i] = 0xf | (i << 4);
|
||||
+ }
|
||||
+
|
||||
for (i = 0; i < 8; i++) {
|
||||
err = snd_hda_codec_write(codec, pin_nid, 0,
|
||||
AC_VERB_SET_HDMI_CHAN_SLOT,
|
||||
- hdmi_channel_mapping[ca][i]);
|
||||
+ non_pcm ? non_pcm_mapping[i] : hdmi_channel_mapping[ca][i]);
|
||||
if (err) {
|
||||
snd_printdd(KERN_NOTICE
|
||||
"HDMI: channel mapping failed\n");
|
||||
@@ -699,15 +712,27 @@ static bool hdmi_infoframe_uptodate(struct hda_codec *codec, hda_nid_t pin_nid,
|
||||
}
|
||||
|
||||
static void hdmi_setup_audio_infoframe(struct hda_codec *codec, int pin_idx,
|
||||
- struct snd_pcm_substream *substream)
|
||||
+ hda_nid_t cvt_nid, struct snd_pcm_substream *substream)
|
||||
{
|
||||
struct hdmi_spec *spec = codec->spec;
|
||||
struct hdmi_spec_per_pin *per_pin = &spec->pins[pin_idx];
|
||||
+ struct hdmi_spec_per_cvt *per_cvt;
|
||||
+ struct hda_spdif_out *spdif;
|
||||
hda_nid_t pin_nid = per_pin->pin_nid;
|
||||
int channels = substream->runtime->channels;
|
||||
struct hdmi_eld *eld;
|
||||
int ca;
|
||||
+ int cvt_idx;
|
||||
union audio_infoframe ai;
|
||||
+ bool non_pcm = false;
|
||||
+
|
||||
+ cvt_idx = cvt_nid_to_cvt_index(spec, cvt_nid);
|
||||
+ per_cvt = &spec->cvts[cvt_idx];
|
||||
+
|
||||
+ mutex_lock(&codec->spdif_mutex);
|
||||
+ spdif = snd_hda_spdif_out_of_nid(codec, cvt_nid);
|
||||
+ non_pcm = !!(spdif->status & IEC958_AES0_NONAUDIO);
|
||||
+ mutex_unlock(&codec->spdif_mutex);
|
||||
|
||||
eld = &spec->pins[pin_idx].sink_eld;
|
||||
if (!eld->monitor_present)
|
||||
@@ -750,12 +775,14 @@ static void hdmi_setup_audio_infoframe(struct hda_codec *codec, int pin_idx,
|
||||
"pin=%d channels=%d\n",
|
||||
pin_nid,
|
||||
channels);
|
||||
- hdmi_setup_channel_mapping(codec, pin_nid, ca);
|
||||
+ hdmi_setup_channel_mapping(codec, pin_nid, cvt_nid, non_pcm, ca);
|
||||
hdmi_stop_infoframe_trans(codec, pin_nid);
|
||||
hdmi_fill_audio_infoframe(codec, pin_nid,
|
||||
ai.bytes, sizeof(ai));
|
||||
hdmi_start_infoframe_trans(codec, pin_nid);
|
||||
}
|
||||
+
|
||||
+ per_cvt->non_pcm = non_pcm;
|
||||
}
|
||||
|
||||
|
||||
@@ -1077,6 +1104,7 @@ static int hdmi_add_cvt(struct hda_codec *codec, hda_nid_t cvt_nid)
|
||||
|
||||
per_cvt->cvt_nid = cvt_nid;
|
||||
per_cvt->channels_min = 2;
|
||||
+ per_cvt->non_pcm = false;
|
||||
if (chans <= 16)
|
||||
per_cvt->channels_max = chans;
|
||||
|
||||
@@ -1164,7 +1192,7 @@ static int generic_hdmi_playback_pcm_prepare(struct hda_pcm_stream *hinfo,
|
||||
|
||||
hdmi_set_channel_count(codec, cvt_nid, substream->runtime->channels);
|
||||
|
||||
- hdmi_setup_audio_infoframe(codec, pin_idx, substream);
|
||||
+ hdmi_setup_audio_infoframe(codec, pin_idx, cvt_nid, substream);
|
||||
|
||||
pinctl = snd_hda_codec_read(codec, pin_nid, 0,
|
||||
AC_VERB_GET_PIN_WIDGET_CONTROL, 0);
|
||||
--
|
||||
1.7.9.5
|
||||
@@ -1,27 +0,0 @@
|
||||
For HBR stream test, use straight channel mapping way.
|
||||
when switched back to "speaker-test -c8", even the audio
|
||||
infoframe is up-to-date, there should be correct channel mapping setup.
|
||||
|
||||
Signed-off-by: Wang Xingchao <xingchao.wang at intel.com>
|
||||
---
|
||||
sound/pci/hda/patch_hdmi.c | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c
|
||||
index a87f8b2..bcb0939 100644
|
||||
--- a/sound/pci/hda/patch_hdmi.c
|
||||
+++ b/sound/pci/hda/patch_hdmi.c
|
||||
@@ -780,6 +780,11 @@ static void hdmi_setup_audio_infoframe(struct hda_codec *codec, int pin_idx,
|
||||
hdmi_fill_audio_infoframe(codec, pin_nid,
|
||||
ai.bytes, sizeof(ai));
|
||||
hdmi_start_infoframe_trans(codec, pin_nid);
|
||||
+ } else {
|
||||
+ /* For non-pcm audio switch, setup new channel mapping
|
||||
+ * accordingly */
|
||||
+ if (per_cvt->non_pcm != non_pcm)
|
||||
+ hdmi_setup_channel_mapping(codec, pin_nid, cvt_nid, non_pcm, ca);
|
||||
}
|
||||
|
||||
per_cvt->non_pcm = non_pcm;
|
||||
--
|
||||
1.7.9.5
|
||||
@@ -1,29 +0,0 @@
|
||||
From: Francois Romieu <romieu@fr.zoreil.com>
|
||||
Date: Fri, 31 Aug 2012 21:06:17 +0000 (+0200)
|
||||
Subject: r8169: add D-Link DGE-560T identifiers.
|
||||
X-Git-Tag: v3.7-rc1~145^2~236
|
||||
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Fstable%2Flinux-stable.git;a=commitdiff_plain;h=2a35cfa591ac63f17815c2d9432b799e37527980;hp=da210f559019ba1cd4ebee2a28ad158bfb95bab2
|
||||
|
||||
r8169: add D-Link DGE-560T identifiers.
|
||||
|
||||
This one includes a 8168. Not to be confused with the sky2 driven
|
||||
one whose PCI vendor and device ID are the same.
|
||||
|
||||
Reported-by: Neyuki Inaya <in@joblog.ru>
|
||||
Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
|
||||
diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c
|
||||
index b47d5b3..0c96604 100644
|
||||
--- a/drivers/net/ethernet/realtek/r8169.c
|
||||
+++ b/drivers/net/ethernet/realtek/r8169.c
|
||||
@@ -287,6 +287,8 @@ static DEFINE_PCI_DEVICE_TABLE(rtl8169_pci_tbl) = {
|
||||
{ PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8167), 0, 0, RTL_CFG_0 },
|
||||
{ PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8168), 0, 0, RTL_CFG_1 },
|
||||
{ PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8169), 0, 0, RTL_CFG_0 },
|
||||
+ { PCI_VENDOR_ID_DLINK, 0x4300,
|
||||
+ PCI_VENDOR_ID_DLINK, 0x4b10, 0, 0, RTL_CFG_1 },
|
||||
{ PCI_DEVICE(PCI_VENDOR_ID_DLINK, 0x4300), 0, 0, RTL_CFG_0 },
|
||||
{ PCI_DEVICE(PCI_VENDOR_ID_DLINK, 0x4302), 0, 0, RTL_CFG_0 },
|
||||
{ PCI_DEVICE(PCI_VENDOR_ID_AT, 0xc107), 0, 0, RTL_CFG_0 },
|
||||
@@ -979,9 +979,9 @@ diff -Naur linux-3.7.2/drivers/net/ethernet/jme.c linux-3.7.2.patch/drivers/net/
|
||||
.ndo_start_xmit = jme_start_xmit,
|
||||
.ndo_set_mac_address = jme_set_macaddr,
|
||||
- .ndo_set_rx_mode = jme_set_multi,
|
||||
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,2,0)
|
||||
+ .ndo_set_multicast_list = jme_set_multi,
|
||||
+#endif
|
||||
+ .ndo_set_rx_mode = jme_set_multi,
|
||||
+
|
||||
+
|
||||
.ndo_change_mtu = jme_change_mtu,
|
||||
.ndo_tx_timeout = jme_tx_timeout,
|
||||
- .ndo_fix_features = jme_fix_features,
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
From 083e2330c09b7a5f905020c10e9f52b5c1e17979 Mon Sep 17 00:00:00 2001
|
||||
From: Mengdong Lin <mengdong.lin@intel.com>
|
||||
Date: Thu, 28 Mar 2013 09:20:22 +0000
|
||||
Subject: ALSA: hda - bug fix on return value when getting HDMI ELD info
|
||||
|
||||
commit 2ef5692efad330b67a234e2c49edad38538751e7 upstream.
|
||||
|
||||
In function snd_hdmi_get_eld(), the variable 'ret' should be initialized to 0.
|
||||
Otherwise it will be returned uninitialized as non-zero after ELD info is got
|
||||
successfully. Thus hdmi_present_sense() will always assume ELD info is invalid
|
||||
by mistake, and /proc file system cannot show the proper ELD info.
|
||||
|
||||
Signed-off-by: Mengdong Lin <mengdong.lin@intel.com>
|
||||
Acked-by: David Henningsson <david.henningsson@canonical.com>
|
||||
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
---
|
||||
diff --git a/sound/pci/hda/hda_eld.c b/sound/pci/hda/hda_eld.c
|
||||
index 4c054f4..86f6468 100644
|
||||
--- a/sound/pci/hda/hda_eld.c
|
||||
+++ b/sound/pci/hda/hda_eld.c
|
||||
@@ -322,7 +322,7 @@ int snd_hdmi_get_eld(struct hdmi_eld *eld,
|
||||
struct hda_codec *codec, hda_nid_t nid)
|
||||
{
|
||||
int i;
|
||||
- int ret;
|
||||
+ int ret = 0;
|
||||
int size;
|
||||
unsigned char *buf;
|
||||
|
||||
--
|
||||
cgit v0.9.1
|
||||
40
packages/linux/patches/3.7.10/linux-990.12-hda-Enabling_Realtek_ALC671_codec.patch
vendored
Normal file
40
packages/linux/patches/3.7.10/linux-990.12-hda-Enabling_Realtek_ALC671_codec.patch
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
From 0187ab6184b36cc1f01424ef534648c198578dbe Mon Sep 17 00:00:00 2001
|
||||
From: Rainer Koenig <Rainer.Koenig@ts.fujitsu.com>
|
||||
Date: Thu, 04 Apr 2013 06:40:38 +0000
|
||||
Subject: ALSA: hda - Enabling Realtek ALC 671 codec
|
||||
|
||||
commit 1d87caa69c04008e09f5ff47b5e6acb6116febc7 upstream.
|
||||
|
||||
* Added the device ID to the modalias list and assinged ALC662 patches
|
||||
for it
|
||||
* Added 4 port support for the device ID 0671 in alc662_parse_auto_config
|
||||
|
||||
Signed-off-by: Rainer Koenig <Rainer.Koenig@ts.fujitsu.com>
|
||||
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
---
|
||||
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
|
||||
index 47fb18d..ee975a2 100644
|
||||
--- a/sound/pci/hda/patch_realtek.c
|
||||
+++ b/sound/pci/hda/patch_realtek.c
|
||||
@@ -6720,7 +6720,8 @@ static int alc662_parse_auto_config(struct hda_codec *codec)
|
||||
const hda_nid_t *ssids;
|
||||
|
||||
if (codec->vendor_id == 0x10ec0272 || codec->vendor_id == 0x10ec0663 ||
|
||||
- codec->vendor_id == 0x10ec0665 || codec->vendor_id == 0x10ec0670)
|
||||
+ codec->vendor_id == 0x10ec0665 || codec->vendor_id == 0x10ec0670 ||
|
||||
+ codec->vendor_id == 0x10ec0671)
|
||||
ssids = alc663_ssids;
|
||||
else
|
||||
ssids = alc662_ssids;
|
||||
@@ -7173,6 +7174,7 @@ static const struct hda_codec_preset snd_hda_preset_realtek[] = {
|
||||
{ .id = 0x10ec0665, .name = "ALC665", .patch = patch_alc662 },
|
||||
{ .id = 0x10ec0668, .name = "ALC668", .patch = patch_alc662 },
|
||||
{ .id = 0x10ec0670, .name = "ALC670", .patch = patch_alc662 },
|
||||
+ { .id = 0x10ec0671, .name = "ALC671", .patch = patch_alc662 },
|
||||
{ .id = 0x10ec0680, .name = "ALC680", .patch = patch_alc680 },
|
||||
{ .id = 0x10ec0880, .name = "ALC880", .patch = patch_alc880 },
|
||||
{ .id = 0x10ec0882, .name = "ALC882", .patch = patch_alc882 },
|
||||
--
|
||||
cgit v0.9.1
|
||||
30
packages/linux/patches/3.7.10/linux-990.13-hda-fix_typo_in_proc_output.patch
vendored
Normal file
30
packages/linux/patches/3.7.10/linux-990.13-hda-fix_typo_in_proc_output.patch
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
From 05c05ef21a1cf71d16189cd4d8060b47f504db2b Mon Sep 17 00:00:00 2001
|
||||
From: David Henningsson <david.henningsson@canonical.com>
|
||||
Date: Thu, 04 Apr 2013 09:47:13 +0000
|
||||
Subject: ALSA: hda - fix typo in proc output
|
||||
|
||||
commit aeb3a97222832e5457c4b72d72235098ce4bfe8d upstream.
|
||||
|
||||
Rename "Digitial In" to "Digital In". This function is only used for
|
||||
proc output, so should not cause any problems to change.
|
||||
|
||||
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
|
||||
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
---
|
||||
diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c
|
||||
index e46b6a3..622f726 100644
|
||||
--- a/sound/pci/hda/hda_codec.c
|
||||
+++ b/sound/pci/hda/hda_codec.c
|
||||
@@ -173,7 +173,7 @@ const char *snd_hda_get_jack_type(u32 cfg)
|
||||
"Line Out", "Speaker", "HP Out", "CD",
|
||||
"SPDIF Out", "Digital Out", "Modem Line", "Modem Hand",
|
||||
"Line In", "Aux", "Mic", "Telephony",
|
||||
- "SPDIF In", "Digitial In", "Reserved", "Other"
|
||||
+ "SPDIF In", "Digital In", "Reserved", "Other"
|
||||
};
|
||||
|
||||
return jack_types[(cfg & AC_DEFCFG_DEVICE)
|
||||
--
|
||||
cgit v0.9.1
|
||||
69
packages/linux/patches/3.7.10/linux-990.21-r8169-fix_auto_speed_down_issue.patch
vendored
Normal file
69
packages/linux/patches/3.7.10/linux-990.21-r8169-fix_auto_speed_down_issue.patch
vendored
Normal file
@@ -0,0 +1,69 @@
|
||||
From 77e2cc382c06a8be48f80e769991e9a4b36a03ce Mon Sep 17 00:00:00 2001
|
||||
From: hayeswang <hayeswang@realtek.com>
|
||||
Date: Sun, 31 Mar 2013 17:02:04 +0000
|
||||
Subject: r8169: fix auto speed down issue
|
||||
|
||||
commit e2409d83434d77874b461b78af6a19cd6e6a1280 upstream.
|
||||
|
||||
It would cause no link after suspending or shutdowning when the
|
||||
nic changes the speed to 10M and connects to a link partner which
|
||||
forces the speed to 100M.
|
||||
|
||||
Check the link partner ability to determine which speed to set.
|
||||
|
||||
Signed-off-by: Hayes Wang <hayeswang@realtek.com>
|
||||
Acked-by: Francois Romieu <romieu@fr.zoreil.com>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
Signed-off-by: Jonghwan Choi <jhbird.choi@samsung.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
|
||||
---
|
||||
diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c
|
||||
index 998974f..2d849da 100644
|
||||
--- a/drivers/net/ethernet/realtek/r8169.c
|
||||
+++ b/drivers/net/ethernet/realtek/r8169.c
|
||||
@@ -3819,6 +3819,30 @@ static void rtl_init_mdio_ops(struct rtl8169_private *tp)
|
||||
}
|
||||
}
|
||||
|
||||
+static void rtl_speed_down(struct rtl8169_private *tp)
|
||||
+{
|
||||
+ u32 adv;
|
||||
+ int lpa;
|
||||
+
|
||||
+ rtl_writephy(tp, 0x1f, 0x0000);
|
||||
+ lpa = rtl_readphy(tp, MII_LPA);
|
||||
+
|
||||
+ if (lpa & (LPA_10HALF | LPA_10FULL))
|
||||
+ adv = ADVERTISED_10baseT_Half | ADVERTISED_10baseT_Full;
|
||||
+ else if (lpa & (LPA_100HALF | LPA_100FULL))
|
||||
+ adv = ADVERTISED_10baseT_Half | ADVERTISED_10baseT_Full |
|
||||
+ ADVERTISED_100baseT_Half | ADVERTISED_100baseT_Full;
|
||||
+ else
|
||||
+ adv = ADVERTISED_10baseT_Half | ADVERTISED_10baseT_Full |
|
||||
+ ADVERTISED_100baseT_Half | ADVERTISED_100baseT_Full |
|
||||
+ (tp->mii.supports_gmii ?
|
||||
+ ADVERTISED_1000baseT_Half |
|
||||
+ ADVERTISED_1000baseT_Full : 0);
|
||||
+
|
||||
+ rtl8169_set_speed(tp->dev, AUTONEG_ENABLE, SPEED_1000, DUPLEX_FULL,
|
||||
+ adv);
|
||||
+}
|
||||
+
|
||||
static void rtl_wol_suspend_quirk(struct rtl8169_private *tp)
|
||||
{
|
||||
void __iomem *ioaddr = tp->mmio_addr;
|
||||
@@ -3849,9 +3873,7 @@ static bool rtl_wol_pll_power_down(struct rtl8169_private *tp)
|
||||
if (!(__rtl8169_get_wol(tp) & WAKE_ANY))
|
||||
return false;
|
||||
|
||||
- rtl_writephy(tp, 0x1f, 0x0000);
|
||||
- rtl_writephy(tp, MII_BMCR, 0x0000);
|
||||
-
|
||||
+ rtl_speed_down(tp);
|
||||
rtl_wol_suspend_quirk(tp);
|
||||
|
||||
return true;
|
||||
--
|
||||
cgit v0.9.1
|
||||
@@ -0,0 +1,42 @@
|
||||
From 19a993879bb86c801995f55702ab6beaa5485f5e Mon Sep 17 00:00:00 2001
|
||||
From: Tim Gardner <tim.gardner@canonical.com>
|
||||
Date: Mon, 18 Feb 2013 19:56:28 +0000
|
||||
Subject: rt2x00: rt2x00pci_regbusy_read() - only print register access failure once
|
||||
|
||||
commit 83589b30f1e1dc9898986293c9336b8ce1705dec upstream.
|
||||
|
||||
BugLink: http://bugs.launchpad.net/bugs/1128840
|
||||
|
||||
It appears that when this register read fails it never recovers, so
|
||||
I think there is no need to repeat the same error message ad infinitum.
|
||||
|
||||
Signed-off-by: Tim Gardner <tim.gardner@canonical.com>
|
||||
Cc: Ivo van Doorn <IvDoorn@gmail.com>
|
||||
Cc: Gertjan van Wingerde <gwingerde@gmail.com>
|
||||
Cc: Helmut Schaa <helmut.schaa@googlemail.com>
|
||||
Cc: "John W. Linville" <linville@tuxdriver.com>
|
||||
Cc: linux-wireless@vger.kernel.org
|
||||
Cc: users@rt2x00.serialmonkey.com
|
||||
Cc: netdev@vger.kernel.org
|
||||
Cc: stable@vger.kernel.org
|
||||
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
---
|
||||
diff --git a/drivers/net/wireless/rt2x00/rt2x00pci.c b/drivers/net/wireless/rt2x00/rt2x00pci.c
|
||||
index a0c8cae..b1c673e 100644
|
||||
--- a/drivers/net/wireless/rt2x00/rt2x00pci.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2x00pci.c
|
||||
@@ -52,8 +52,8 @@ int rt2x00pci_regbusy_read(struct rt2x00_dev *rt2x00dev,
|
||||
udelay(REGISTER_BUSY_DELAY);
|
||||
}
|
||||
|
||||
- ERROR(rt2x00dev, "Indirect register access failed: "
|
||||
- "offset=0x%.08x, value=0x%.08x\n", offset, *reg);
|
||||
+ printk_once(KERN_ERR "%s() Indirect register access failed: "
|
||||
+ "offset=0x%.08x, value=0x%.08x\n", __func__, offset, *reg);
|
||||
*reg = ~0;
|
||||
|
||||
return 0;
|
||||
--
|
||||
cgit v0.9.1
|
||||
1577
packages/linux/patches/3.7.10/linux-995-CX24120-13Z_frontend.patch
vendored
Executable file
1577
packages/linux/patches/3.7.10/linux-995-CX24120-13Z_frontend.patch
vendored
Executable file
File diff suppressed because it is too large
Load Diff
@@ -19,7 +19,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="xbmc-theme-Confluence"
|
||||
PKG_VERSION="12.1"
|
||||
PKG_VERSION="12.1.6"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
<delay>175</delay>
|
||||
</refresh>
|
||||
</latency>
|
||||
<allowhi10pmultithreading>true</allowhi10pmultithreading>
|
||||
</video>
|
||||
<samba>
|
||||
<clienttimeout>30</clienttimeout>
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="xbmc"
|
||||
PKG_VERSION="12.1"
|
||||
PKG_VERSION="12.1.6"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
||||
107
packages/mediacenter/xbmc/patches/12.1.6/xbmc-601-add_multithread_support_for_hi10p-0.1.patch
vendored
Normal file
107
packages/mediacenter/xbmc/patches/12.1.6/xbmc-601-add_multithread_support_for_hi10p-0.1.patch
vendored
Normal file
@@ -0,0 +1,107 @@
|
||||
From ca0ddf0673dea966af5bf0bc562f9ff69a551cd9 Mon Sep 17 00:00:00 2001
|
||||
From: fritsch <peter.fruehberger@gmail.com>
|
||||
Date: Sat, 12 Jan 2013 13:03:50 +0100
|
||||
Subject: [PATCH] dvdplayer: Allow multithread decoding for hi10p content by
|
||||
default
|
||||
|
||||
This allows decoding of some hi10p material on e.g. AMD Fusion with
|
||||
both cores at the max. This introduces a new advancedsetting named
|
||||
disablehi10pmultithreading to disable hi10p decoded multithreaded.
|
||||
---
|
||||
.../DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp | 18 ++++++++++++++++--
|
||||
.../dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.h | 1 +
|
||||
xbmc/settings/AdvancedSettings.cpp | 2 ++
|
||||
xbmc/settings/AdvancedSettings.h | 1 +
|
||||
4 files changed, 20 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
|
||||
index 8f81637..77ac6b1 100644
|
||||
--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
|
||||
+++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
|
||||
@@ -138,6 +138,7 @@ enum PixelFormat CDVDVideoCodecFFmpeg::GetFormat( struct AVCodecContext * avctx
|
||||
m_iScreenHeight = 0;
|
||||
m_iOrientation = 0;
|
||||
m_bSoftware = false;
|
||||
+ m_isHi10p = false;
|
||||
m_pHardware = NULL;
|
||||
m_iLastKeyframe = 0;
|
||||
m_dts = DVD_NOPTS_VALUE;
|
||||
@@ -187,7 +188,10 @@ bool CDVDVideoCodecFFmpeg::Open(CDVDStreamInfo &hints, CDVDCodecOptions &options
|
||||
case FF_PROFILE_H264_HIGH_444_PREDICTIVE:
|
||||
case FF_PROFILE_H264_HIGH_444_INTRA:
|
||||
case FF_PROFILE_H264_CAVLC_444:
|
||||
+ // this is needed to not open the decoders
|
||||
m_bSoftware = true;
|
||||
+ // this we need to enable multithreading for hi10p via advancedsettings
|
||||
+ m_isHi10p = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -247,8 +251,18 @@ bool CDVDVideoCodecFFmpeg::Open(CDVDStreamInfo &hints, CDVDCodecOptions &options
|
||||
m_pCodecContext->codec_tag = hints.codec_tag;
|
||||
/* Only allow slice threading, since frame threading is more
|
||||
* sensitive to changes in frame sizes, and it causes crashes
|
||||
- * during HW accell */
|
||||
- m_pCodecContext->thread_type = FF_THREAD_SLICE;
|
||||
+ * during HW accell - so we unset it in this case.
|
||||
+ *
|
||||
+ * When we detect Hi10p and user did not disable hi10pmultithreading
|
||||
+ * via advancedsettings.xml we keep the ffmpeg default thread type.
|
||||
+ * */
|
||||
+ if(m_isHi10p && !g_advancedSettings.m_videoDisableHi10pMultithreading)
|
||||
+ {
|
||||
+ CLog::Log(LOGDEBUG,"CDVDVideoCodecFFmpeg::Open() Keep default threading for Hi10p: %d",
|
||||
+ m_pCodecContext->thread_type);
|
||||
+ }
|
||||
+ else
|
||||
+ m_pCodecContext->thread_type = FF_THREAD_SLICE;
|
||||
|
||||
#if defined(TARGET_DARWIN_IOS)
|
||||
// ffmpeg with enabled neon will crash and burn if this is enabled
|
||||
diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.h b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.h
|
||||
index 61d0305..827b2d9 100644
|
||||
--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.h
|
||||
+++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.h
|
||||
@@ -114,6 +114,7 @@ class CDVDVideoCodecFFmpeg : public CDVDVideoCodec
|
||||
|
||||
std::string m_name;
|
||||
bool m_bSoftware;
|
||||
+ bool m_isHi10p;
|
||||
IHardwareDecoder *m_pHardware;
|
||||
int m_iLastKeyframe;
|
||||
double m_dts;
|
||||
diff --git a/xbmc/settings/AdvancedSettings.cpp b/xbmc/settings/AdvancedSettings.cpp
|
||||
index 16800b7..1e0f3e0 100644
|
||||
--- a/xbmc/settings/AdvancedSettings.cpp
|
||||
+++ b/xbmc/settings/AdvancedSettings.cpp
|
||||
@@ -112,6 +112,7 @@ void CAdvancedSettings::Initialize()
|
||||
m_DXVANoDeintProcForProgressive = false;
|
||||
m_videoFpsDetect = 1;
|
||||
m_videoDefaultLatency = 0.0;
|
||||
+ m_videoDisableHi10pMultithreading = false;
|
||||
|
||||
m_musicUseTimeSeeking = true;
|
||||
m_musicTimeSeekForward = 10;
|
||||
@@ -498,6 +499,7 @@ void CAdvancedSettings::ParseSettingsFile(const CStdString &file)
|
||||
XMLUtils::GetBoolean(pElement,"enablehighqualityhwscalers", m_videoEnableHighQualityHwScalers);
|
||||
XMLUtils::GetFloat(pElement,"autoscalemaxfps",m_videoAutoScaleMaxFps, 0.0f, 1000.0f);
|
||||
XMLUtils::GetBoolean(pElement,"allowmpeg4vdpau",m_videoAllowMpeg4VDPAU);
|
||||
+ XMLUtils::GetBoolean(pElement,"disablehi10pmultithreading",m_videoDisableHi10pMultithreading);
|
||||
XMLUtils::GetBoolean(pElement,"allowmpeg4vaapi",m_videoAllowMpeg4VAAPI);
|
||||
XMLUtils::GetBoolean(pElement, "disablebackgrounddeinterlace", m_videoDisableBackgroundDeinterlace);
|
||||
XMLUtils::GetInt(pElement, "useocclusionquery", m_videoCaptureUseOcclusionQuery, -1, 1);
|
||||
diff --git a/xbmc/settings/AdvancedSettings.h b/xbmc/settings/AdvancedSettings.h
|
||||
index 27887d4..fc05e41 100644
|
||||
--- a/xbmc/settings/AdvancedSettings.h
|
||||
+++ b/xbmc/settings/AdvancedSettings.h
|
||||
@@ -164,6 +164,7 @@ class CAdvancedSettings
|
||||
bool m_DXVAForceProcessorRenderer;
|
||||
bool m_DXVANoDeintProcForProgressive;
|
||||
int m_videoFpsDetect;
|
||||
+ bool m_videoDisableHi10pMultithreading;
|
||||
|
||||
CStdString m_videoDefaultPlayer;
|
||||
CStdString m_videoDefaultDVDPlayer;
|
||||
--
|
||||
1.7.10
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
From f9498832d2dd260a47051a88ae9d3e1e1b2f957e Mon Sep 17 00:00:00 2001
|
||||
From: xbmc <fernetmenta@online.de>
|
||||
Date: Mon, 18 Mar 2013 08:20:02 +0100
|
||||
Subject: [PATCH] dvdplayer: reevaluate HasVideo/Audio after a stream change
|
||||
|
||||
---
|
||||
xbmc/cores/omxplayer/OMXPlayer.cpp | 7 +++++++
|
||||
1 file changed, 7 insertions(+)
|
||||
|
||||
diff --git a/xbmc/cores/omxplayer/OMXPlayer.cpp b/xbmc/cores/omxplayer/OMXPlayer.cpp
|
||||
index 3d2ca03..bac062d 100644
|
||||
--- a/xbmc/cores/omxplayer/OMXPlayer.cpp
|
||||
+++ b/xbmc/cores/omxplayer/OMXPlayer.cpp
|
||||
@@ -788,6 +788,13 @@ bool CDVDPlayer::ReadPacket(DemuxPacket*& packet, CDemuxStream*& stream)
|
||||
m_SelectionStreams.Clear(STREAM_NONE, STREAM_SOURCE_DEMUX);
|
||||
m_SelectionStreams.Update(m_pInputStream, m_pDemuxer);
|
||||
OpenDefaultStreams(false);
|
||||
+
|
||||
+ // reevaluate HasVideo/Audio, we may have switched from/to a radio channel
|
||||
+ if(m_CurrentVideo.id < 0)
|
||||
+ m_HasVideo = false;
|
||||
+ if(m_CurrentAudio.id < 0)
|
||||
+ m_HasAudio = false;
|
||||
+
|
||||
return true;
|
||||
}
|
||||
|
||||
--
|
||||
1.8.1.5
|
||||
|
||||
184
packages/mediacenter/xbmc/patches/12.1.6/xbmc-990.07-PR2435.patch
vendored
Normal file
184
packages/mediacenter/xbmc/patches/12.1.6/xbmc-990.07-PR2435.patch
vendored
Normal file
@@ -0,0 +1,184 @@
|
||||
From 2da77839fbf972e8c6f09c56d25f8c7bf999f3fa Mon Sep 17 00:00:00 2001
|
||||
From: dezi <dezi@kappa-mm.de>
|
||||
Date: Mon, 18 Mar 2013 12:29:27 +0000
|
||||
Subject: [PATCH] Added hotplug support for Linux input devices.
|
||||
|
||||
---
|
||||
xbmc/input/linux/LinuxInputDevices.cpp | 80 ++++++++++++++++++++++++++++++++++
|
||||
xbmc/input/linux/LinuxInputDevices.h | 6 +++
|
||||
2 files changed, 86 insertions(+)
|
||||
|
||||
diff --git a/xbmc/input/linux/LinuxInputDevices.cpp b/xbmc/input/linux/LinuxInputDevices.cpp
|
||||
index 9d253bb..1d3d315 100644
|
||||
--- a/xbmc/input/linux/LinuxInputDevices.cpp
|
||||
+++ b/xbmc/input/linux/LinuxInputDevices.cpp
|
||||
@@ -338,6 +338,7 @@
|
||||
m_deviceMinKeyCode = 0;
|
||||
m_deviceMaxKeyCode = 0;
|
||||
m_deviceMaxAxis = 0;
|
||||
+ m_bUnplugged = false;
|
||||
|
||||
Open();
|
||||
}
|
||||
@@ -744,7 +745,15 @@ XBMC_Event CLinuxInputDevice::ReadEvent()
|
||||
readlen = read(m_fd, &levt, sizeof(levt));
|
||||
|
||||
if (readlen <= 0)
|
||||
+ {
|
||||
+ if (errno == ENODEV)
|
||||
+ {
|
||||
+ CLog::Log(LOGINFO,"input device was unplugged %s",m_deviceName);
|
||||
+ m_bUnplugged = true;
|
||||
+ }
|
||||
+
|
||||
break;
|
||||
+ }
|
||||
|
||||
//printf("read event readlen = %d device name %s m_fileName %s\n", readlen, m_deviceName, m_fileName.c_str());
|
||||
|
||||
@@ -963,6 +972,16 @@ void CLinuxInputDevice::GetInfo(int fd)
|
||||
//printf("pref: %d\n", m_devicePreferredId);
|
||||
}
|
||||
|
||||
+char* CLinuxInputDevice::GetDeviceName()
|
||||
+{
|
||||
+ return m_deviceName;
|
||||
+}
|
||||
+
|
||||
+bool CLinuxInputDevice::IsUnplugged()
|
||||
+{
|
||||
+ return m_bUnplugged;
|
||||
+}
|
||||
+
|
||||
bool CLinuxInputDevices::CheckDevice(const char *device)
|
||||
{
|
||||
int fd;
|
||||
@@ -1021,6 +1040,41 @@ void CLinuxInputDevices::InitAvailable()
|
||||
}
|
||||
|
||||
/*
|
||||
+ * Check for hot plugged devices.
|
||||
+ */
|
||||
+void CLinuxInputDevices::CheckHotplugged()
|
||||
+{
|
||||
+ CSingleLock lock(m_devicesListLock);
|
||||
+
|
||||
+ int deviceId = m_devices.size();
|
||||
+
|
||||
+ /* No devices specified. Try to guess some. */
|
||||
+ for (int i = 0; i < MAX_LINUX_INPUT_DEVICES; i++)
|
||||
+ {
|
||||
+ char buf[32];
|
||||
+ bool ispresent = false;
|
||||
+
|
||||
+ snprintf(buf, 32, "/dev/input/event%d", i);
|
||||
+
|
||||
+ for (size_t j = 0; j < m_devices.size(); j++)
|
||||
+ {
|
||||
+ if (strcmp(m_devices[j]->GetDeviceName(),buf) == 0)
|
||||
+ {
|
||||
+ ispresent = true;
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ if (!ispresent && CheckDevice(buf))
|
||||
+ {
|
||||
+ CLog::Log(LOGINFO, "Found input device %s", buf);
|
||||
+ m_devices.push_back(new CLinuxInputDevice(buf, deviceId));
|
||||
+ ++deviceId;
|
||||
+ }
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+/*
|
||||
* Open the device, fill out information about it,
|
||||
* allocate and fill private data, start input thread.
|
||||
*/
|
||||
@@ -1076,6 +1130,9 @@ bool CLinuxInputDevice::Open()
|
||||
{
|
||||
if (m_vt_fd < 0)
|
||||
m_vt_fd = open("/dev/tty0", O_RDWR | O_NOCTTY);
|
||||
+
|
||||
+ if (m_vt_fd < 0)
|
||||
+ m_vt_fd = open("/dev/tty1", O_RDWR | O_NOCTTY);
|
||||
|
||||
if (m_vt_fd < 0)
|
||||
CLog::Log(LOGWARNING, "no keymap support (requires /dev/tty0 - CONFIG_VT)");
|
||||
@@ -1195,6 +1252,23 @@ void CLinuxInputDevice::Close()
|
||||
|
||||
XBMC_Event CLinuxInputDevices::ReadEvent()
|
||||
{
|
||||
+ if (m_bReInitialize)
|
||||
+ {
|
||||
+ InitAvailable();
|
||||
+ m_bReInitialize = false;
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ time_t now;
|
||||
+ time(&now);
|
||||
+
|
||||
+ if ((now - m_lastHotplugCheck) >= 10)
|
||||
+ {
|
||||
+ CheckHotplugged();
|
||||
+ m_lastHotplugCheck = now;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
CSingleLock lock(m_devicesListLock);
|
||||
|
||||
XBMC_Event event;
|
||||
@@ -1207,6 +1281,12 @@ XBMC_Event CLinuxInputDevices::ReadEvent()
|
||||
{
|
||||
break;
|
||||
}
|
||||
+
|
||||
+ if (m_devices[i]->IsUnplugged())
|
||||
+ {
|
||||
+ m_bReInitialize = true;
|
||||
+ break;
|
||||
+ }
|
||||
}
|
||||
|
||||
return event;
|
||||
diff --git a/xbmc/input/linux/LinuxInputDevices.h b/xbmc/input/linux/LinuxInputDevices.h
|
||||
index 18224a9..b7626f4 100644
|
||||
--- a/xbmc/input/linux/LinuxInputDevices.h
|
||||
+++ b/xbmc/input/linux/LinuxInputDevices.h
|
||||
@@ -41,6 +41,8 @@ class CLinuxInputDevice
|
||||
CLinuxInputDevice(const std::string fileName, int index);
|
||||
~CLinuxInputDevice();
|
||||
XBMC_Event ReadEvent();
|
||||
+ char* GetDeviceName();
|
||||
+ bool IsUnplugged();
|
||||
|
||||
private:
|
||||
void SetupKeyboardAutoRepeat(int fd);
|
||||
@@ -76,12 +78,14 @@ class CLinuxInputDevice
|
||||
int m_deviceMaxKeyCode;
|
||||
int m_deviceMaxAxis;
|
||||
bool m_bSkipNonKeyEvents;
|
||||
+ bool m_bUnplugged;
|
||||
};
|
||||
|
||||
class CLinuxInputDevices
|
||||
{
|
||||
public:
|
||||
void InitAvailable();
|
||||
+ void CheckHotplugged();
|
||||
XBMC_Event ReadEvent();
|
||||
bool IsRemoteLowBattery();
|
||||
bool IsRemoteNotPaired();
|
||||
@@ -89,6 +93,8 @@ class CLinuxInputDevices
|
||||
CCriticalSection m_devicesListLock;
|
||||
bool CheckDevice(const char *device);
|
||||
std::vector<CLinuxInputDevice*> m_devices;
|
||||
+ bool m_bReInitialize;
|
||||
+ time_t m_lastHotplugCheck;
|
||||
};
|
||||
|
||||
#endif /* LINUXINPUTDEVICES_H_ */
|
||||
--
|
||||
1.8.1.5
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,99 @@
|
||||
diff -Naur xbmc-12.1/xbmc/cores/omxplayer/OMXPlayerAudio.cpp xbmc-12.1.patch/xbmc/cores/omxplayer/OMXPlayerAudio.cpp
|
||||
--- xbmc-12.1/xbmc/cores/omxplayer/OMXPlayerAudio.cpp 2013-04-07 22:10:57.264461705 +0200
|
||||
+++ xbmc-12.1.patch/xbmc/cores/omxplayer/OMXPlayerAudio.cpp 2013-04-07 22:18:08.064718783 +0200
|
||||
@@ -80,6 +80,7 @@
|
||||
m_send_eos = false;
|
||||
m_bad_state = false;
|
||||
m_hints_current.Clear();
|
||||
+ m_output_stalled = false;
|
||||
|
||||
m_av_clock->SetMasterClock(false);
|
||||
|
||||
@@ -154,6 +155,7 @@
|
||||
m_use_passthrough = (g_guiSettings.GetInt("audiooutput.mode") == AUDIO_HDMI) ? true : false ;
|
||||
m_use_hw_decode = g_advancedSettings.m_omxHWAudioDecode;
|
||||
m_send_eos = false;
|
||||
+ m_output_stalled = m_stalled;
|
||||
}
|
||||
|
||||
bool OMXPlayerAudio::CloseStream(bool bWaitForBuffers)
|
||||
@@ -442,11 +444,11 @@
|
||||
}
|
||||
|
||||
if(bDropPacket)
|
||||
- m_stalled = false;
|
||||
+ m_stalled = m_output_stalled = false;
|
||||
|
||||
if(m_omxAudio.GetCacheTime() < 0.1 /*&& min(99,m_messageQueue.GetLevel() + MathUtils::round_int(100.0/8.0*GetCacheTime())) > 10*/)
|
||||
{
|
||||
- m_stalled = true;
|
||||
+ m_stalled = m_output_stalled = true;
|
||||
if(!m_av_clock->OMXAudioBuffer() && m_av_clock->HasVideo() && m_speed == DVD_PLAYSPEED_NORMAL)
|
||||
{
|
||||
clock_gettime(CLOCK_REALTIME, &m_starttime);
|
||||
@@ -454,6 +456,9 @@
|
||||
}
|
||||
}
|
||||
|
||||
+ if (m_stalled && m_omxAudio.GetCacheTime() > 0.0)
|
||||
+ m_stalled = false;
|
||||
+
|
||||
// signal to our parent that we have initialized
|
||||
if(m_started == false)
|
||||
{
|
||||
@@ -478,6 +483,7 @@
|
||||
|
||||
if (ret == MSGQ_TIMEOUT)
|
||||
{
|
||||
+ m_stalled = true;
|
||||
Sleep(10);
|
||||
continue;
|
||||
}
|
||||
@@ -497,12 +503,14 @@
|
||||
CLog::Log(LOGINFO, "Audio: dts:%.0f pts:%.0f size:%d (s:%d f:%d d:%d l:%d) s:%d %d/%d late:%d,%d", pPacket->dts, pPacket->pts,
|
||||
(int)pPacket->iSize, m_started, m_flush, bPacketDrop, m_stalled, m_speed, 0, 0, (int)m_omxAudio.GetAudioRenderingLatency(), (int)m_hints_current.samplerate);
|
||||
#endif
|
||||
+
|
||||
+ m_stalled = false;
|
||||
if(Decode(pPacket, m_speed > DVD_PLAYSPEED_NORMAL || m_speed < 0 || bPacketDrop))
|
||||
{
|
||||
- if (m_stalled && (m_omxAudio.GetCacheTime() > (AUDIO_BUFFER_SECONDS * 0.75f)))
|
||||
+ if (m_output_stalled && (m_omxAudio.GetCacheTime() > (AUDIO_BUFFER_SECONDS * 0.75f)))
|
||||
{
|
||||
CLog::Log(LOGINFO, "COMXPlayerAudio - Switching to normal playback");
|
||||
- m_stalled = false;
|
||||
+ m_stalled = m_output_stalled = false;
|
||||
if(m_av_clock->HasVideo() && m_av_clock->OMXAudioBuffer())
|
||||
m_av_clock->OMXAudioBufferStop();
|
||||
}
|
||||
@@ -510,9 +518,9 @@
|
||||
// hard unlock audio out buffering
|
||||
clock_gettime(CLOCK_REALTIME, &m_endtime);
|
||||
//int iLevel = min(99,m_messageQueue.GetLevel() + MathUtils::round_int(100.0/8.0*GetCacheTime()));
|
||||
- if(/*iLevel < 10 &&*/ m_stalled && m_av_clock->OMXAudioBuffer() && (m_endtime.tv_sec - m_starttime.tv_sec) > 1)
|
||||
+ if(/*iLevel < 10 &&*/ m_output_stalled && m_av_clock->OMXAudioBuffer() && (m_endtime.tv_sec - m_starttime.tv_sec) > 1)
|
||||
{
|
||||
- m_stalled = false;
|
||||
+ m_stalled = m_output_stalled = false;
|
||||
if(m_av_clock->HasVideo() && m_av_clock->OMXAudioBuffer())
|
||||
m_av_clock->OMXAudioBufferStop();
|
||||
}
|
||||
@@ -563,6 +571,7 @@
|
||||
m_av_clock->UnLock();
|
||||
m_syncclock = true;
|
||||
m_stalled = true;
|
||||
+ m_output_stalled = true;
|
||||
m_started = false;
|
||||
|
||||
if (m_pAudioCodec)
|
||||
diff -Naur xbmc-12.1/xbmc/cores/omxplayer/OMXPlayerAudio.h xbmc-12.1.patch/xbmc/cores/omxplayer/OMXPlayerAudio.h
|
||||
--- xbmc-12.1/xbmc/cores/omxplayer/OMXPlayerAudio.h 2013-04-07 22:10:57.262461708 +0200
|
||||
+++ xbmc-12.1.patch/xbmc/cores/omxplayer/OMXPlayerAudio.h 2013-04-07 22:13:15.931280700 +0200
|
||||
@@ -76,6 +76,7 @@
|
||||
|
||||
bool m_stalled;
|
||||
bool m_started;
|
||||
+ bool m_output_stalled;
|
||||
|
||||
BitstreamStats m_audioStats;
|
||||
|
||||
69
packages/mediacenter/xbmc/patches/12.1.6/xbmc-995.04-OMXPlayer-some_caching_fixes_for_pvr.patch
vendored
Normal file
69
packages/mediacenter/xbmc/patches/12.1.6/xbmc-995.04-OMXPlayer-some_caching_fixes_for_pvr.patch
vendored
Normal file
@@ -0,0 +1,69 @@
|
||||
From eacf9a512d118e50a9777ae05460a2a344a408e6 Mon Sep 17 00:00:00 2001
|
||||
From: xbmc <fernetmenta@online.de>
|
||||
Date: Thu, 28 Mar 2013 15:18:53 +0100
|
||||
Subject: [PATCH] OMXPlayer: some caching fixes for pvr
|
||||
|
||||
---
|
||||
xbmc/cores/omxplayer/OMXPlayer.cpp | 13 +++++++------
|
||||
1 file changed, 7 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/xbmc/cores/omxplayer/OMXPlayer.cpp b/xbmc/cores/omxplayer/OMXPlayer.cpp
|
||||
index 28addd3..34f3acb 100644
|
||||
--- a/xbmc/cores/omxplayer/OMXPlayer.cpp
|
||||
+++ b/xbmc/cores/omxplayer/OMXPlayer.cpp
|
||||
@@ -1243,13 +1243,13 @@ void COMXPlayer::Process()
|
||||
if (!IsValidStream(m_CurrentAudio) && m_player_audio.IsStalled()) CloseAudioStream(true);
|
||||
if (!IsValidStream(m_CurrentVideo) && m_player_video.IsStalled()) CloseVideoStream(true);
|
||||
if (!IsValidStream(m_CurrentSubtitle) && m_player_subtitle.IsStalled()) CloseSubtitleStream(true);
|
||||
- if (!IsValidStream(m_CurrentTeletext)) CloseTeletextStream(true);
|
||||
+// if (!IsValidStream(m_CurrentTeletext)) CloseTeletextStream(true);
|
||||
|
||||
// see if we can find something better to play
|
||||
if (IsBetterStream(m_CurrentAudio, pStream)) OpenAudioStream (pStream->iId, pStream->source);
|
||||
if (IsBetterStream(m_CurrentVideo, pStream)) OpenVideoStream (pStream->iId, pStream->source);
|
||||
if (IsBetterStream(m_CurrentSubtitle, pStream)) OpenSubtitleStream(pStream->iId, pStream->source);
|
||||
- if (IsBetterStream(m_CurrentTeletext, pStream)) OpenTeletextStream(pStream->iId, pStream->source);
|
||||
+// if (IsBetterStream(m_CurrentTeletext, pStream)) OpenTeletextStream(pStream->iId, pStream->source);
|
||||
|
||||
if(m_change_volume)
|
||||
{
|
||||
@@ -2233,7 +2233,8 @@ void COMXPlayer::HandleMessages()
|
||||
// 1. disable audio
|
||||
// 2. skip frames and adjust their pts or the clock
|
||||
m_playSpeed = speed;
|
||||
- m_caching = CACHESTATE_DONE;
|
||||
+ if (m_caching != CACHESTATE_PVR && m_playSpeed != DVD_PLAYSPEED_NORMAL)
|
||||
+ SetCaching(CACHESTATE_DONE);
|
||||
m_av_clock.SetSpeed(speed);
|
||||
m_av_clock.OMXSetSpeed(speed);
|
||||
m_player_audio.SetSpeed(speed);
|
||||
@@ -3106,7 +3107,7 @@ bool COMXPlayer::CloseAudioStream(bool bWaitForBuffers)
|
||||
|
||||
CLog::Log(LOGNOTICE, "Closing audio stream");
|
||||
|
||||
- if(bWaitForBuffers)
|
||||
+ if(bWaitForBuffers && m_caching != CACHESTATE_PVR)
|
||||
SetCaching(CACHESTATE_DONE);
|
||||
|
||||
m_player_audio.CloseStream(bWaitForBuffers);
|
||||
@@ -3122,7 +3123,7 @@ bool COMXPlayer::CloseVideoStream(bool bWaitForBuffers)
|
||||
|
||||
CLog::Log(LOGNOTICE, "Closing video stream");
|
||||
|
||||
- if(bWaitForBuffers)
|
||||
+ if(bWaitForBuffers && m_caching != CACHESTATE_PVR)
|
||||
SetCaching(CACHESTATE_DONE);
|
||||
|
||||
m_player_video.CloseStream(bWaitForBuffers);
|
||||
@@ -3151,7 +3152,7 @@ bool COMXPlayer::CloseTeletextStream(bool bWaitForBuffers)
|
||||
|
||||
CLog::Log(LOGNOTICE, "Closing teletext stream");
|
||||
|
||||
- if(bWaitForBuffers)
|
||||
+ if(bWaitForBuffers && m_caching != CACHESTATE_PVR)
|
||||
SetCaching(CACHESTATE_DONE);
|
||||
|
||||
m_player_teletext.CloseStream(bWaitForBuffers);
|
||||
--
|
||||
1.8.1.5
|
||||
|
||||
@@ -1,91 +0,0 @@
|
||||
From 5016973c68567e0691c9dc6c14d78de9e7d4558c Mon Sep 17 00:00:00 2001
|
||||
From: popcornmix <popcornmix@gmail.com>
|
||||
Date: Fri, 25 Jan 2013 23:00:13 +0000
|
||||
Subject: [PATCH] [rbp] Add support for new video codecs Latest firmware has a
|
||||
start_x.elf with support for additional codecs. These are
|
||||
MJPEG, VP6, VP8 and Ogg Theora. They are software GPU
|
||||
accelerated and should be good for SD resolutions. This
|
||||
update should be harmless with firmware that doesn't
|
||||
support the new codecs - they will fail to open and behave
|
||||
as before.
|
||||
|
||||
---
|
||||
xbmc/cores/omxplayer/OMXVideo.cpp | 33 +++++++++++++++++++++++++++++++++
|
||||
1 file changed, 33 insertions(+)
|
||||
|
||||
diff --git a/xbmc/cores/omxplayer/OMXVideo.cpp b/xbmc/cores/omxplayer/OMXVideo.cpp
|
||||
index 9215fd9..45e10fe 100644
|
||||
--- a/xbmc/cores/omxplayer/OMXVideo.cpp
|
||||
+++ b/xbmc/cores/omxplayer/OMXVideo.cpp
|
||||
@@ -69,7 +69,10 @@
|
||||
#define OMX_MPEG2V_DECODER OMX_VIDEO_DECODER
|
||||
#define OMX_VC1_DECODER OMX_VIDEO_DECODER
|
||||
#define OMX_WMV3_DECODER OMX_VIDEO_DECODER
|
||||
+#define OMX_VP6_DECODER OMX_VIDEO_DECODER
|
||||
#define OMX_VP8_DECODER OMX_VIDEO_DECODER
|
||||
+#define OMX_THEORA_DECODER OMX_VIDEO_DECODER
|
||||
+#define OMX_MJPEG_DECODER OMX_VIDEO_DECODER
|
||||
|
||||
#define MAX_TEXT_LENGTH 1024
|
||||
|
||||
@@ -145,6 +148,7 @@ bool COMXVideo::NaluFormatStartCodes(enum CodecID codec, uint8_t *in_extradata,
|
||||
|
||||
bool COMXVideo::Open(CDVDStreamInfo &hints, OMXClock *clock, bool deinterlace, bool hdmi_clock_sync)
|
||||
{
|
||||
+ bool vflip = false;
|
||||
Close();
|
||||
|
||||
OMX_ERRORTYPE omx_err = OMX_ErrorNone;
|
||||
@@ -248,6 +252,18 @@ bool COMXVideo::Open(CDVDStreamInfo &hints, OMXClock *clock, bool deinterlace, b
|
||||
m_codingType = OMX_VIDEO_CodingMPEG4;
|
||||
m_video_codec_name = "omx-h263";
|
||||
break;
|
||||
+ case CODEC_ID_VP6:
|
||||
+ // this form is encoded upside down
|
||||
+ vflip = true;
|
||||
+ // fall through
|
||||
+ case CODEC_ID_VP6F:
|
||||
+ case CODEC_ID_VP6A:
|
||||
+ // (role name) video_decoder.vp6
|
||||
+ // VP6
|
||||
+ decoder_name = OMX_VP6_DECODER;
|
||||
+ m_codingType = OMX_VIDEO_CodingVP6;
|
||||
+ m_video_codec_name = "omx-vp6";
|
||||
+ break;
|
||||
case CODEC_ID_VP8:
|
||||
// (role name) video_decoder.vp8
|
||||
// VP8
|
||||
@@ -255,6 +271,21 @@ bool COMXVideo::Open(CDVDStreamInfo &hints, OMXClock *clock, bool deinterlace, b
|
||||
m_codingType = OMX_VIDEO_CodingVP8;
|
||||
m_video_codec_name = "omx-vp8";
|
||||
break;
|
||||
+ case CODEC_ID_THEORA:
|
||||
+ // (role name) video_decoder.theora
|
||||
+ // theora
|
||||
+ decoder_name = OMX_THEORA_DECODER;
|
||||
+ m_codingType = OMX_VIDEO_CodingTheora;
|
||||
+ m_video_codec_name = "omx-theora";
|
||||
+ break;
|
||||
+ case CODEC_ID_MJPEG:
|
||||
+ case CODEC_ID_MJPEGB:
|
||||
+ // (role name) video_decoder.mjpg
|
||||
+ // mjpg
|
||||
+ decoder_name = OMX_MJPEG_DECODER;
|
||||
+ m_codingType = OMX_VIDEO_CodingMJPEG;
|
||||
+ m_video_codec_name = "omx-mjpeg";
|
||||
+ break;
|
||||
case CODEC_ID_VC1:
|
||||
case CODEC_ID_WMV3:
|
||||
// (role name) video_decoder.vc1
|
||||
@@ -594,6 +625,8 @@ bool COMXVideo::Open(CDVDStreamInfo &hints, OMXClock *clock, bool deinterlace, b
|
||||
configDisplay.transform = OMX_DISPLAY_ROT0;
|
||||
break;
|
||||
}
|
||||
+ if (vflip)
|
||||
+ configDisplay.transform = OMX_DISPLAY_MIRROR_ROT180;
|
||||
|
||||
omx_err = m_omx_render.SetConfig(OMX_IndexConfigDisplayRegion, &configDisplay);
|
||||
if(omx_err != OMX_ErrorNone)
|
||||
--
|
||||
1.7.10
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
From 2c915ea56abd68cf2310eb9d01936d19a2f118ab Mon Sep 17 00:00:00 2001
|
||||
From: davilla <davilla@4pi.com>
|
||||
Date: Tue, 19 Mar 2013 13:41:53 -0400
|
||||
Subject: [PATCH] changed, assert(0) is nasty, this could just be a bad audio
|
||||
packet
|
||||
|
||||
---
|
||||
xbmc/cores/dvdplayer/DVDPlayerAudio.cpp | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/xbmc/cores/dvdplayer/DVDPlayerAudio.cpp b/xbmc/cores/dvdplayer/DVDPlayerAudio.cpp
|
||||
index 03ba5ea..e075cd6 100644
|
||||
--- a/xbmc/cores/dvdplayer/DVDPlayerAudio.cpp
|
||||
+++ b/xbmc/cores/dvdplayer/DVDPlayerAudio.cpp
|
||||
@@ -284,7 +284,7 @@ int CDVDPlayerAudio::DecodeFrame(DVDAudioFrame &audioframe, bool bDropPacket)
|
||||
CLog::Log(LOGERROR, "CDVDPlayerAudio:DecodeFrame - Codec tried to consume more data than available. Potential memory corruption");
|
||||
m_decode.Release();
|
||||
m_pAudioCodec->Reset();
|
||||
- assert(0);
|
||||
+ return DECODE_FLAG_ERROR;
|
||||
}
|
||||
|
||||
m_decode.data += len;
|
||||
--
|
||||
1.8.1.5
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
From befdcfad8d2b14c9d935c3662a56853d617f884d Mon Sep 17 00:00:00 2001
|
||||
From: Voyager1 <voyager@xbmc.org>
|
||||
Date: Sat, 23 Mar 2013 07:19:46 +0100
|
||||
Subject: [PATCH] [dvdplayer] fix deadlock when trying to go to disc menu
|
||||
|
||||
---
|
||||
xbmc/cores/dvdplayer/DVDPlayer.cpp | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/xbmc/cores/dvdplayer/DVDPlayer.cpp b/xbmc/cores/dvdplayer/DVDPlayer.cpp
|
||||
index 3d2ca03..22c89dc 100644
|
||||
--- a/xbmc/cores/dvdplayer/DVDPlayer.cpp
|
||||
+++ b/xbmc/cores/dvdplayer/DVDPlayer.cpp
|
||||
@@ -3511,7 +3511,7 @@ bool CDVDPlayer::OnAction(const CAction &action)
|
||||
pMenus->OnMenu();
|
||||
// send a message to everyone that we've gone to the menu
|
||||
CGUIMessage msg(GUI_MSG_VIDEO_MENU_STARTED, 0, 0);
|
||||
- g_windowManager.SendMessage(msg);
|
||||
+ g_windowManager.SendThreadMessage(msg);
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
--
|
||||
1.8.1.5
|
||||
|
||||
@@ -1,47 +0,0 @@
|
||||
--- xbmc-12.0.3/configure.in.orig 2013-03-01 13:21:58.791312360 +0100
|
||||
+++ xbmc-12.0.3/configure.in 2013-03-01 13:38:41.138311757 +0100
|
||||
@@ -990,9 +990,15 @@
|
||||
AC_CHECK_LIB([tiff], [main],, AC_MSG_ERROR($missing_library))
|
||||
if echo "$ARCH" | grep -q freebsd; then
|
||||
AC_CHECK_LIB([pthread], [main],LIBS="-pthread $LIBS", AC_MSG_ERROR($missing_library))
|
||||
+AC_CHECK_LIB([pthread], [pthread_set_name_np],
|
||||
+ AC_DEFINE([HAVE_PTHREAD_SET_NAME_NP],[1],["Define to 1 if pthread has pthread_set_name_np"]),
|
||||
+ AC_MSG_RESULT([Could not find pthread_set_name_np in pthread]))
|
||||
else
|
||||
if test "$target_platform" != "target_android" ; then
|
||||
AC_CHECK_LIB([pthread], [main],, AC_MSG_ERROR($missing_library))
|
||||
+ AC_CHECK_LIB([pthread], [pthread_setname_np],
|
||||
+ AC_DEFINE([HAVE_PTHREAD_SETNAME_NP],[1],["Define to 1 if pthread has pthread_setname_np"]),
|
||||
+ AC_MSG_RESULT([Could not find pthread_setname_np in pthread]))
|
||||
fi
|
||||
fi
|
||||
AC_CHECK_LIB([lzo2], [main],, AC_MSG_ERROR($missing_library))
|
||||
--- xbmc-12.0.3/xbmc/threads/platform/pthreads/ThreadImpl.cpp.orig 2013-03-01 14:40:50.080309513 +0100
|
||||
+++ xbmc-12.0.3/xbmc/threads/platform/pthreads/ThreadImpl.cpp 2013-03-01 14:40:20.548309531 +0100
|
||||
@@ -18,6 +18,9 @@
|
||||
*
|
||||
*/
|
||||
|
||||
+#if (defined HAVE_CONFIG_H) && (!defined WIN32)
|
||||
+ #include "config.h"
|
||||
+#endif
|
||||
#include <limits.h>
|
||||
#if defined(TARGET_ANDROID)
|
||||
#include <unistd.h>
|
||||
@@ -71,10 +74,16 @@
|
||||
m_ThreadOpaque.LwpId = syscall(SYS_gettid);
|
||||
#endif
|
||||
|
||||
+#if defined(HAVE_PTHREAD_SETNAME_NP)
|
||||
#ifdef TARGET_DARWIN
|
||||
#if(__MAC_OS_X_VERSION_MIN_REQUIRED >= 1060 || __IPHONE_OS_VERSION_MIN_REQUIRED >= 30200)
|
||||
pthread_setname_np(m_ThreadName.c_str());
|
||||
#endif
|
||||
+#else
|
||||
+ pthread_setname_np(m_ThreadId, m_ThreadName.c_str());
|
||||
+#endif
|
||||
+#elif defined(HAVE_PTHREAD_SET_NAME_NP)
|
||||
+ pthread_set_name_np(m_ThreadId, m_ThreadName.c_str());
|
||||
#endif
|
||||
|
||||
#ifdef RLIMIT_NICE
|
||||
@@ -1,144 +0,0 @@
|
||||
From f2faaa846e03cbcc1ba11f09baad690c792035c5 Mon Sep 17 00:00:00 2001
|
||||
From: fritsch <Peter.Fruehberger@gmail.com>
|
||||
Date: Thu, 28 Feb 2013 00:17:03 +0100
|
||||
Subject: [PATCH] AE: Revisit Device Opening. Try to set periodSize of 100 ms
|
||||
and BufferSize of 800 ms
|
||||
|
||||
---
|
||||
xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp | 98 ++++++++++++++++-----------
|
||||
1 file changed, 59 insertions(+), 39 deletions(-)
|
||||
|
||||
diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp b/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp
|
||||
index fe40d17..821bd2e 100644
|
||||
--- a/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp
|
||||
+++ b/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp
|
||||
@@ -38,7 +38,6 @@
|
||||
#endif
|
||||
|
||||
#define ALSA_OPTIONS (SND_PCM_NONBLOCK | SND_PCM_NO_AUTO_FORMAT | SND_PCM_NO_AUTO_CHANNELS | SND_PCM_NO_AUTO_RESAMPLE)
|
||||
-#define ALSA_PERIODS 16
|
||||
|
||||
#define ALSA_MAX_CHANNELS 16
|
||||
static enum AEChannel ALSAChannelMap[ALSA_MAX_CHANNELS + 1] = {
|
||||
@@ -328,59 +327,80 @@ bool CAESinkALSA::InitializeHW(AEAudioFormat &format)
|
||||
}
|
||||
}
|
||||
|
||||
- unsigned int periods;
|
||||
-
|
||||
snd_pcm_uframes_t periodSize, bufferSize;
|
||||
snd_pcm_hw_params_get_buffer_size_max(hw_params, &bufferSize);
|
||||
+ snd_pcm_hw_params_get_period_size_max(hw_params, &periodSize, NULL);
|
||||
+
|
||||
+ /*
|
||||
+ We want to make sure, that we have approx 500 to 800 ms Buffer with
|
||||
+ a periodSize of approx 100 ms.
|
||||
+ It is calced:
|
||||
+ periodSize = sampleRate / 10
|
||||
+ buffersize = periodSize * 1 frame * 8.
|
||||
+ */
|
||||
+ periodSize = std::min(periodSize, (snd_pcm_uframes_t) sampleRate / 10);
|
||||
+ bufferSize = std::min(bufferSize, (snd_pcm_uframes_t) periodSize * 8);
|
||||
+
|
||||
+ /*
|
||||
+ According to upstream we should set buffer size first - so make sure it is always at least
|
||||
+ double of period size to not get underruns
|
||||
+ */
|
||||
+ periodSize = std::min(periodSize, bufferSize / 2);
|
||||
|
||||
- bufferSize = std::min(bufferSize, (snd_pcm_uframes_t)8192);
|
||||
- periodSize = bufferSize / ALSA_PERIODS;
|
||||
- periods = ALSA_PERIODS;
|
||||
-
|
||||
- CLog::Log(LOGDEBUG, "CAESinkALSA::InitializeHW - Request: periodSize %lu, periods %u, bufferSize %lu", periodSize, periods, bufferSize);
|
||||
+ CLog::Log(LOGDEBUG, "CAESinkALSA::InitializeHW - Request: periodSize %lu, bufferSize %lu", periodSize, bufferSize);
|
||||
|
||||
- /* work on a copy of the hw params */
|
||||
snd_pcm_hw_params_t *hw_params_copy;
|
||||
snd_pcm_hw_params_alloca(&hw_params_copy);
|
||||
-
|
||||
- /* try to set the buffer size then the period size */
|
||||
- snd_pcm_hw_params_copy(hw_params_copy, hw_params);
|
||||
- snd_pcm_hw_params_set_buffer_size_near(m_pcm, hw_params_copy, &bufferSize);
|
||||
- snd_pcm_hw_params_set_period_size_near(m_pcm, hw_params_copy, &periodSize, NULL);
|
||||
- snd_pcm_hw_params_set_periods_near (m_pcm, hw_params_copy, &periods , NULL);
|
||||
- if (snd_pcm_hw_params(m_pcm, hw_params_copy) != 0)
|
||||
+ snd_pcm_hw_params_copy(hw_params_copy, hw_params); // copy what we have and is already working
|
||||
+
|
||||
+ // first trying bufferSize, PeriodSize
|
||||
+ // for more info see here:
|
||||
+ // http://mailman.alsa-project.org/pipermail/alsa-devel/2009-September/021069.html
|
||||
+ // the last three tries are done as within pulseaudio
|
||||
+
|
||||
+ // backup periodSize and bufferSize first. Restore them after every failed try
|
||||
+ snd_pcm_uframes_t periodSizeTemp, bufferSizeTemp;
|
||||
+ periodSizeTemp = periodSize;
|
||||
+ bufferSizeTemp = bufferSize;
|
||||
+ if (snd_pcm_hw_params_set_buffer_size_near(m_pcm, hw_params_copy, &bufferSize) != 0
|
||||
+ || snd_pcm_hw_params_set_period_size_near(m_pcm, hw_params_copy, &periodSize, NULL) != 0
|
||||
+ || snd_pcm_hw_params(m_pcm, hw_params_copy) != 0)
|
||||
{
|
||||
- /* try to set the period size then the buffer size */
|
||||
- snd_pcm_hw_params_copy(hw_params_copy, hw_params);
|
||||
- snd_pcm_hw_params_set_period_size_near(m_pcm, hw_params_copy, &periodSize, NULL);
|
||||
- snd_pcm_hw_params_set_buffer_size_near(m_pcm, hw_params_copy, &bufferSize);
|
||||
- snd_pcm_hw_params_set_periods_near (m_pcm, hw_params_copy, &periods , NULL);
|
||||
- if (snd_pcm_hw_params(m_pcm, hw_params_copy) != 0)
|
||||
+ bufferSize = bufferSizeTemp;
|
||||
+ periodSize = periodSizeTemp;
|
||||
+ // retry with PeriodSize, bufferSize
|
||||
+ snd_pcm_hw_params_copy(hw_params_copy, hw_params); // restore working copy
|
||||
+ if (snd_pcm_hw_params_set_period_size_near(m_pcm, hw_params_copy, &periodSize, NULL) != 0
|
||||
+ || snd_pcm_hw_params_set_buffer_size_near(m_pcm, hw_params_copy, &bufferSize) != 0
|
||||
+ || snd_pcm_hw_params(m_pcm, hw_params_copy) != 0)
|
||||
{
|
||||
- /* try to just set the buffer size */
|
||||
- snd_pcm_hw_params_copy(hw_params_copy, hw_params);
|
||||
- snd_pcm_hw_params_set_buffer_size_near(m_pcm, hw_params_copy, &bufferSize);
|
||||
- snd_pcm_hw_params_set_periods_near (m_pcm, hw_params_copy, &periods , NULL);
|
||||
- if (snd_pcm_hw_params(m_pcm, hw_params_copy) != 0)
|
||||
+ // try only periodSize
|
||||
+ periodSize = periodSizeTemp;
|
||||
+ snd_pcm_hw_params_copy(hw_params_copy, hw_params); // restore working copy
|
||||
+ if(snd_pcm_hw_params_set_period_size_near(m_pcm, hw_params_copy, &periodSize, NULL) != 0
|
||||
+ || snd_pcm_hw_params(m_pcm, hw_params_copy) != 0)
|
||||
{
|
||||
- /* try to just set the period size */
|
||||
- snd_pcm_hw_params_copy(hw_params_copy, hw_params);
|
||||
- snd_pcm_hw_params_set_period_size_near(m_pcm, hw_params_copy, &periodSize, NULL);
|
||||
- snd_pcm_hw_params_set_periods_near (m_pcm, hw_params_copy, &periods , NULL);
|
||||
- if (snd_pcm_hw_params(m_pcm, hw_params_copy) != 0)
|
||||
+ // try only BufferSize
|
||||
+ bufferSize = bufferSizeTemp;
|
||||
+ snd_pcm_hw_params_copy(hw_params_copy, hw_params); // restory working copy
|
||||
+ if (snd_pcm_hw_params_set_buffer_size_near(m_pcm, hw_params_copy, &bufferSize) != 0
|
||||
+ || snd_pcm_hw_params(m_pcm, hw_params_copy) != 0)
|
||||
{
|
||||
- CLog::Log(LOGERROR, "CAESinkALSA::InitializeHW - Failed to set the parameters");
|
||||
- return false;
|
||||
+ // set default that Alsa would choose
|
||||
+ CLog::Log(LOGWARNING, "CAESinkAlsa::IntializeHW - Using default alsa values - set failed");
|
||||
+ if (snd_pcm_hw_params(m_pcm, hw_params) != 0)
|
||||
+ {
|
||||
+ CLog::Log(LOGDEBUG, "CAESinkALSA::InitializeHW - Could not init a valid sink");
|
||||
+ return false;
|
||||
+ }
|
||||
}
|
||||
}
|
||||
+ // reread values when alsa default was kept
|
||||
+ snd_pcm_get_params(m_pcm, &bufferSize, &periodSize);
|
||||
}
|
||||
}
|
||||
-
|
||||
- snd_pcm_hw_params_get_period_size(hw_params_copy, &periodSize, NULL);
|
||||
- snd_pcm_hw_params_get_buffer_size(hw_params_copy, &bufferSize);
|
||||
|
||||
-
|
||||
- CLog::Log(LOGDEBUG, "CAESinkALSA::InitializeHW - Got: periodSize %lu, periods %u, bufferSize %lu", periodSize, periods, bufferSize);
|
||||
+ CLog::Log(LOGDEBUG, "CAESinkALSA::InitializeHW - Got: periodSize %lu, bufferSize %lu", periodSize, bufferSize);
|
||||
|
||||
/* set the format parameters */
|
||||
format.m_sampleRate = sampleRate;
|
||||
--
|
||||
1.7.10
|
||||
|
||||
@@ -1,76 +0,0 @@
|
||||
From e1374217a66d1324f3482f6567448f0bc7ef2946 Mon Sep 17 00:00:00 2001
|
||||
From: spiff <spiff@xbmc.org>
|
||||
Date: Thu, 21 Mar 2013 14:40:52 +0100
|
||||
Subject: [PATCH] fixed: prevent infinite loop in add-on dependency checks
|
||||
|
||||
---
|
||||
xbmc/addons/AddonInstaller.cpp | 21 ++++++++++++++-------
|
||||
xbmc/addons/AddonInstaller.h | 10 ++++++++++
|
||||
2 files changed, 24 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/xbmc/addons/AddonInstaller.cpp b/xbmc/addons/AddonInstaller.cpp
|
||||
index b5ba7a0..3e655bb 100644
|
||||
--- a/xbmc/addons/AddonInstaller.cpp
|
||||
+++ b/xbmc/addons/AddonInstaller.cpp
|
||||
@@ -313,6 +313,14 @@ void CAddonInstaller::InstallFromXBMCRepo(const set<CStdString> &addonIDs)
|
||||
|
||||
bool CAddonInstaller::CheckDependencies(const AddonPtr &addon)
|
||||
{
|
||||
+ std::vector<std::string> preDeps;
|
||||
+ preDeps.push_back(addon->ID());
|
||||
+ return CheckDependencies(addon, preDeps);
|
||||
+}
|
||||
+
|
||||
+bool CAddonInstaller::CheckDependencies(const AddonPtr &addon,
|
||||
+ std::vector<std::string>& preDeps)
|
||||
+{
|
||||
if (!addon.get())
|
||||
return true; // a NULL addon has no dependencies
|
||||
ADDONDEPS deps = addon->GetDeps();
|
||||
@@ -333,16 +341,15 @@ bool CAddonInstaller::CheckDependencies(const AddonPtr &addon)
|
||||
return false;
|
||||
}
|
||||
}
|
||||
- // prevent infinite loops
|
||||
- if (dep && dep->ID() == addon->ID())
|
||||
- {
|
||||
- CLog::Log(LOGERROR, "Addon %s depends on itself, ignoring", addon->ID().c_str());
|
||||
- return false;
|
||||
- }
|
||||
// at this point we have our dep, or the dep is optional (and we don't have it) so check that it's OK as well
|
||||
// TODO: should we assume that installed deps are OK?
|
||||
- if (dep && !CheckDependencies(dep))
|
||||
+ if (dep &&
|
||||
+ std::find(preDeps.begin(), preDeps.end(), dep->ID()) == preDeps.end() &&
|
||||
+ !CheckDependencies(dep, preDeps))
|
||||
+ {
|
||||
return false;
|
||||
+ }
|
||||
+ preDeps.push_back(dep->ID());
|
||||
}
|
||||
return true;
|
||||
}
|
||||
diff --git a/xbmc/addons/AddonInstaller.h b/xbmc/addons/AddonInstaller.h
|
||||
index b0ff2bd..5df69fb 100644
|
||||
--- a/xbmc/addons/AddonInstaller.h
|
||||
+++ b/xbmc/addons/AddonInstaller.h
|
||||
@@ -122,6 +122,16 @@ class CAddonInstaller : public IJobCallback
|
||||
*/
|
||||
bool DoInstall(const ADDON::AddonPtr &addon, const CStdString &hash = "", bool update = false, const CStdString &referer = "", bool background = true);
|
||||
|
||||
+ /*! \brief Check whether dependencies of an addon exist or are installable.
|
||||
+ Iterates through the addon's dependencies, checking they're installed or installable.
|
||||
+ Each dependency must also satisfies CheckDependencies in turn.
|
||||
+ \param addon the addon to check
|
||||
+ \param preDeps previous dependencies encountered during recursion. aids in avoiding infinite recursion
|
||||
+ \return true if dependencies are available, false otherwise.
|
||||
+ */
|
||||
+ bool CheckDependencies(const ADDON::AddonPtr &addon,
|
||||
+ std::vector<std::string>& preDeps);
|
||||
+
|
||||
void PrunePackageCache();
|
||||
int64_t EnumeratePackageFolder(std::map<CStdString,CFileItemList*>& result);
|
||||
|
||||
--
|
||||
1.8.1.5
|
||||
|
||||
@@ -1,37 +0,0 @@
|
||||
From b5458130ba00c15ef468d6180a21994bff3daf42 Mon Sep 17 00:00:00 2001
|
||||
From: Voyager1 <voyager@xbmc.org>
|
||||
Date: Sat, 23 Mar 2013 07:32:09 +0100
|
||||
Subject: [PATCH] fixed: addoninstaller unguarded null pointer after
|
||||
b0825b1a212849e52fca27409ea87e81591f7cf4
|
||||
|
||||
---
|
||||
xbmc/addons/AddonInstaller.cpp | 11 ++++++-----
|
||||
1 file changed, 6 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/xbmc/addons/AddonInstaller.cpp b/xbmc/addons/AddonInstaller.cpp
|
||||
index 3e655bb..276467a 100644
|
||||
--- a/xbmc/addons/AddonInstaller.cpp
|
||||
+++ b/xbmc/addons/AddonInstaller.cpp
|
||||
@@ -343,13 +343,14 @@ bool CAddonInstaller::CheckDependencies(const AddonPtr &addon,
|
||||
}
|
||||
// at this point we have our dep, or the dep is optional (and we don't have it) so check that it's OK as well
|
||||
// TODO: should we assume that installed deps are OK?
|
||||
- if (dep &&
|
||||
- std::find(preDeps.begin(), preDeps.end(), dep->ID()) == preDeps.end() &&
|
||||
- !CheckDependencies(dep, preDeps))
|
||||
+ if (dep)
|
||||
{
|
||||
- return false;
|
||||
+ if (std::find(preDeps.begin(), preDeps.end(), dep->ID()) == preDeps.end() &&
|
||||
+ !CheckDependencies(dep, preDeps))
|
||||
+ return false;
|
||||
+ else
|
||||
+ preDeps.push_back(dep->ID());
|
||||
}
|
||||
- preDeps.push_back(dep->ID());
|
||||
}
|
||||
return true;
|
||||
}
|
||||
--
|
||||
1.8.1.5
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
From cc39b66b38657787e99bf6369a77c993cd601c23 Mon Sep 17 00:00:00 2001
|
||||
From: ulion <ulion2002@gmail.com>
|
||||
Date: Sun, 24 Mar 2013 08:05:04 +0800
|
||||
Subject: [PATCH] Only add to preDeps when it's not in there.
|
||||
|
||||
---
|
||||
xbmc/addons/AddonInstaller.cpp | 8 +++-----
|
||||
1 file changed, 3 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/xbmc/addons/AddonInstaller.cpp b/xbmc/addons/AddonInstaller.cpp
|
||||
index 276467a..631a01c 100644
|
||||
--- a/xbmc/addons/AddonInstaller.cpp
|
||||
+++ b/xbmc/addons/AddonInstaller.cpp
|
||||
@@ -343,13 +343,11 @@ bool CAddonInstaller::CheckDependencies(const AddonPtr &addon,
|
||||
}
|
||||
// at this point we have our dep, or the dep is optional (and we don't have it) so check that it's OK as well
|
||||
// TODO: should we assume that installed deps are OK?
|
||||
- if (dep)
|
||||
+ if (dep && std::find(preDeps.begin(), preDeps.end(), dep->ID()) == preDeps.end())
|
||||
{
|
||||
- if (std::find(preDeps.begin(), preDeps.end(), dep->ID()) == preDeps.end() &&
|
||||
- !CheckDependencies(dep, preDeps))
|
||||
+ if (!CheckDependencies(dep, preDeps))
|
||||
return false;
|
||||
- else
|
||||
- preDeps.push_back(dep->ID());
|
||||
+ preDeps.push_back(dep->ID());
|
||||
}
|
||||
}
|
||||
return true;
|
||||
--
|
||||
1.8.1.5
|
||||
|
||||
@@ -1,46 +0,0 @@
|
||||
From eb4ae32119a83716d7fb930381d2848c02383cea Mon Sep 17 00:00:00 2001
|
||||
From: fritsch <peter.fruehberger@gmail.com>
|
||||
Date: Wed, 6 Mar 2013 07:52:59 +0100
|
||||
Subject: [PATCH] AE: Fix menu sounds by decreasing buffer(max 200 ms) and
|
||||
periodSize(50 ms)
|
||||
|
||||
---
|
||||
xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp | 19 ++++++++++---------
|
||||
1 file changed, 10 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp b/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp
|
||||
index 821bd2e..21891a5 100644
|
||||
--- a/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp
|
||||
+++ b/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp
|
||||
@@ -332,18 +332,19 @@ bool CAESinkALSA::InitializeHW(AEAudioFormat &format)
|
||||
snd_pcm_hw_params_get_period_size_max(hw_params, &periodSize, NULL);
|
||||
|
||||
/*
|
||||
- We want to make sure, that we have approx 500 to 800 ms Buffer with
|
||||
- a periodSize of approx 100 ms.
|
||||
- It is calced:
|
||||
- periodSize = sampleRate / 10
|
||||
- buffersize = periodSize * 1 frame * 8.
|
||||
+ We want to make sure, that we have max 200 ms Buffer with
|
||||
+ a periodSize of approx 50 ms. Choosing a higher bufferSize
|
||||
+ will cause problems with menu sounds. Buffer will be increased
|
||||
+ after those are fixed.
|
||||
+ periodSize = sampleRate / 20
|
||||
+ bufferSize = periodSize * 1 frame * 4.
|
||||
*/
|
||||
- periodSize = std::min(periodSize, (snd_pcm_uframes_t) sampleRate / 10);
|
||||
- bufferSize = std::min(bufferSize, (snd_pcm_uframes_t) periodSize * 8);
|
||||
+ periodSize = std::min(periodSize, (snd_pcm_uframes_t) sampleRate / 20);
|
||||
+ bufferSize = std::min(bufferSize, (snd_pcm_uframes_t) periodSize * 4);
|
||||
|
||||
/*
|
||||
- According to upstream we should set buffer size first - so make sure it is always at least
|
||||
- double of period size to not get underruns
|
||||
+ According to upstream we should set buffer size first - so make sure it is always at least
|
||||
+ double of period size to not get underruns
|
||||
*/
|
||||
periodSize = std::min(periodSize, bufferSize / 2);
|
||||
|
||||
--
|
||||
1.7.10
|
||||
|
||||
@@ -1,59 +0,0 @@
|
||||
From 95ea48d4353516c59e70c962c4970da0bd511aac Mon Sep 17 00:00:00 2001
|
||||
From: Anssi Hannula <anssi@xbmc.org>
|
||||
Date: Mon, 11 Mar 2013 00:05:13 +0200
|
||||
Subject: [PATCH 1/2] AE: ALSA: Try to get 200ms buffer even if we did not get
|
||||
50ms periodsize
|
||||
|
||||
---
|
||||
xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp | 4 +---
|
||||
1 file changed, 1 insertion(+), 3 deletions(-)
|
||||
|
||||
diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp b/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp
|
||||
index 332f305..b905ada 100644
|
||||
--- a/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp
|
||||
+++ b/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp
|
||||
@@ -340,11 +340,9 @@ bool CAESinkALSA::InitializeHW(AEAudioFormat &format)
|
||||
a periodSize of approx 50 ms. Choosing a higher bufferSize
|
||||
will cause problems with menu sounds. Buffer will be increased
|
||||
after those are fixed.
|
||||
- periodSize = sampleRate / 20
|
||||
- bufferSize = periodSize * 1 frame * 4.
|
||||
*/
|
||||
periodSize = std::min(periodSize, (snd_pcm_uframes_t) sampleRate / 20);
|
||||
- bufferSize = std::min(bufferSize, (snd_pcm_uframes_t) periodSize * 4);
|
||||
+ bufferSize = std::min(bufferSize, (snd_pcm_uframes_t) sampleRate / 5);
|
||||
|
||||
/*
|
||||
According to upstream we should set buffer size first - so make sure it is always at least
|
||||
--
|
||||
1.7.10
|
||||
|
||||
|
||||
From 39f2487881b6fa2d52c58f7b2452420efc711cd5 Mon Sep 17 00:00:00 2001
|
||||
From: Anssi Hannula <anssi@xbmc.org>
|
||||
Date: Mon, 11 Mar 2013 00:12:54 +0200
|
||||
Subject: [PATCH 2/2] AE: ALSA: Try to get a minimum of 4 periods per buffer
|
||||
|
||||
---
|
||||
xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp b/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp
|
||||
index b905ada..94f6b80 100644
|
||||
--- a/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp
|
||||
+++ b/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp
|
||||
@@ -346,9 +346,9 @@ bool CAESinkALSA::InitializeHW(AEAudioFormat &format)
|
||||
|
||||
/*
|
||||
According to upstream we should set buffer size first - so make sure it is always at least
|
||||
- double of period size to not get underruns
|
||||
+ 4x period size to not get underruns (some systems seem to have issues with only 2 periods)
|
||||
*/
|
||||
- periodSize = std::min(periodSize, bufferSize / 2);
|
||||
+ periodSize = std::min(periodSize, bufferSize / 4);
|
||||
|
||||
CLog::Log(LOGDEBUG, "CAESinkALSA::InitializeHW - Request: periodSize %lu, bufferSize %lu", periodSize, bufferSize);
|
||||
|
||||
--
|
||||
1.7.10
|
||||
|
||||
@@ -1,53 +0,0 @@
|
||||
From 907f5086e76b0b6d0211c9bbd9da6c6fb54e891b Mon Sep 17 00:00:00 2001
|
||||
From: Juan Font <juanfontalonso@gmail.com>
|
||||
Date: Wed, 6 Mar 2013 09:50:15 +0100
|
||||
Subject: [PATCH 1/2] Avoid fps detection when probing the format if we will
|
||||
trust codec fps during playback.
|
||||
|
||||
---
|
||||
xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
|
||||
index 7d4e35b..4b62d75 100644
|
||||
--- a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
|
||||
+++ b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
|
||||
@@ -425,6 +425,9 @@ bool CDVDDemuxFFmpeg::Open(CDVDInputStream* pInput)
|
||||
|
||||
// set the interrupt callback, appeared in libavformat 53.15.0
|
||||
m_pFormatContext->interrupt_callback = int_cb;
|
||||
+
|
||||
+ // Avoid detecting framerate if advancedsettings.xml says so
|
||||
+ m_pFormatContext->fps_probe_size = (!g_advancedSettings.m_videoFpsDetect) ? 0 : -1;
|
||||
|
||||
// analyse very short to speed up mjpeg playback start
|
||||
if (iformat && (strcmp(iformat->name, "mjpeg") == 0) && m_ioContext->seekable == 0)
|
||||
--
|
||||
1.7.10
|
||||
|
||||
|
||||
From e2966a346140fcd7a9742f17bfd7710bffbe1066 Mon Sep 17 00:00:00 2001
|
||||
From: Juan Font <juanfontalonso@gmail.com>
|
||||
Date: Wed, 6 Mar 2013 10:33:32 +0100
|
||||
Subject: [PATCH 2/2] Improved code legibility.
|
||||
|
||||
---
|
||||
xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
|
||||
index 4b62d75..e84290d 100644
|
||||
--- a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
|
||||
+++ b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
|
||||
@@ -427,7 +427,7 @@ bool CDVDDemuxFFmpeg::Open(CDVDInputStream* pInput)
|
||||
m_pFormatContext->interrupt_callback = int_cb;
|
||||
|
||||
// Avoid detecting framerate if advancedsettings.xml says so
|
||||
- m_pFormatContext->fps_probe_size = (!g_advancedSettings.m_videoFpsDetect) ? 0 : -1;
|
||||
+ m_pFormatContext->fps_probe_size = (g_advancedSettings.m_videoFpsDetect == 0) ? 0 : -1;
|
||||
|
||||
// analyse very short to speed up mjpeg playback start
|
||||
if (iformat && (strcmp(iformat->name, "mjpeg") == 0) && m_ioContext->seekable == 0)
|
||||
--
|
||||
1.7.10
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user